프록시 사용 시 ERR_TUNNEL_CONNECTION_FAILED 오류 해결 방법

업데이트:

프록시를 통해 https:// 페이지를 로드할 때 브라우저는 CONNECT 요청을 보내고 프록시가 해당 사이트로의 터널을 열어줄 때까지 대기합니다. ERR_TUNNEL_CONNECTION_FAILED는 프록시가 요청을 수락하는 대신 오류로 응답할 때 발생합니다. 문제는 Chrome에서 구체적으로 어떤 오류인지 알려주지 않으므로, 실제 코드를 먼저 확인해야 합니다.

Puppeteer 및 Playwright와 완벽 호환되는 프록시

직접 재현해 본 두 가지 사례

두 사례 모두 테스트 프록시를 대상으로 실행되었으며, 본 문서에서는 설명용 주소인 203.0.113.10:8080 및 user123:pass456으로 표기했습니다. 일반 Chrome 창에서는 407이 발생해도 터널 오류로 이어지지 않고 프록시 사용자 이름과 비밀번호를 묻는 로그인 대화상자가 표시됩니다. 따라서 407로 인한 터널 오류는 주로 자동화 도구나 비밀번호를 입력받을 수 없는 앱에서 발생합니다.

프록시의 CONNECT 응답Chrome 표시curl 표시
비밀번호 입력 창이 없는 상태에서 407 반환 (headless Chrome)ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 407
프록시가 대상 사이트에 연결할 수 없어 502 반환ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 502

주요 원인 (발생 빈도순)

  • 자동화 스크립트에서 인증 정보를 전송하지 않음. Chrome의 --proxy-server 플래그는 호스트와 포트만 지원하며 user:pass는 인식하지 못합니다. 이로 인해 Headless Puppeteer나 Selenium이 407을 수신하고 터널 연결 실패를 보고합니다.
  • 비밀번호로 보호된 Wi-Fi 프록시 환경의 모바일 앱. 앱에 로그인 대화상자가 없어 브라우저는 정상 작동하더라도 HTTPS 통신이 차단됩니다.
  • 프록시가 대상 서버에 접근할 수 없음. CONNECT 요청에 502를 반환하며, 자세한 내용은 502 Bad Gateway 페이지에서 다룹니다.
  • 특정 사이트만 접속 실패. 동일한 프록시를 통해 다른 사이트는 정상 작동하지만, 대상 사이트가 차단되었거나 다운된 상태입니다.

curl 명령어 한 줄로 실제 코드 확인하기

실제 프록시 정보로 변경하여 curl -v -x http://user123:[email protected]:8080 https://example.com 명령을 실행하세요. > CONNECT example.com:443 HTTP/1.1 바로 다음 줄을 확인합니다. 407이 나오면 407 가이드의 해결 절차를 따르고, 502가 나오면 대상 사이트나 프록시 이후 네트워크 경로의 문제입니다. 터미널을 사용하기 번거롭다면 프록시 정보를 프록시 체커에 입력해 동일한 상황에 대해 auth failed (407) 또는 HTTP 502 결과를 확인할 수도 있습니다.

환경별 해결 방법

  • Puppeteer: 실행 시 --proxy-server=http://host:port 설정을 유지하고 페이지 탐색 전에 page.authenticate({ username, password })를 호출하세요. 전체 예제는 Puppeteer 프록시 가이드에서 확인하실 수 있습니다.
  • Playwright: 브라우저 실행 시 proxy: { server, username, password }를 전달하면 Playwright가 자동으로 407 인증을 처리합니다. 자세한 내용은 Playwright를 참고하세요.
  • Selenium: Chrome은 명령줄에서 user:pass를 지원하지 않습니다. Selenium 가이드에서 적용 가능한 대안을 확인하세요.
  • Windows 환경의 Chrome: 로그인 대화상자가 표시되지 않는다면 프록시 확장 프로그램이 이를 차단하고 있는지 확인한 후, 확장 프로그램이 비활성화된 창에서 다시 시도하세요.
  • 모바일 기기: 인증 프록시가 필요한 앱의 경우 Android 설정 가이드에 안내된 것처럼 user:pass를 지원하는 프록시 앱을 사용하세요.

단계별 안내

  1. 1

    CONNECT 응답 코드 확인

    프록시 정보를 사용해 curl -v -x 명령을 실행하거나 프록시 체커에 입력하여 프록시가 407을 반환하는지 502를 반환하는지 확인합니다.

  2. 2

    407 오류의 경우: 올바른 인증 정보 전달

    스크립트 사용 시 --proxy-server에 user:pass를 직접 포함하지 말고 라이브러리에서 제공하는 인증 훅을 사용하세요.

  3. 3

    502 오류의 경우: 다른 사이트 접속 시도

    동일한 프록시를 통해 example.com 같은 대형 사이트에 접속해 보세요. 정상 작동한다면 원래 대상 사이트 자체에 문제가 있는 것입니다.

  4. 4

    재실행 및 외부 IP 확인

    터널이 정상적으로 열리면 해당 브라우저에서 내 IP 확인 페이지에 접속하여 트래픽이 프록시를 통과하고 있는지 확인합니다.

자주 묻는 질문

http 페이지는 열리는데 https 페이지만 실패하는 이유는 무엇인가요?

일반 http는 CONNECT 요청이 필요 없어 프록시가 요청을 직접 전달합니다. 반면 https만 터널을 생성하므로 터널 오류는 https에서만 발생합니다.

Android에서 ERR_TUNNEL_CONNECTION_FAILED 오류가 발생하는 원인은 무엇인가요?

대부분 앱이 Wi-Fi 프록시에 사용자 이름과 비밀번호를 전달하지 못하기 때문입니다. Android용 Chrome에서 동일한 페이지를 열어보세요. Chrome에서 로그인 창이 뜨고 정상 로드된다면 앱 문제입니다.

--proxy-server 옵션에 user:pass를 직접 입력해도 되나요?

아니요. Chrome은 해당 플래그의 인증 정보를 무시하여 407 오류 및 터널 오류가 발생합니다. 대신 Puppeteer, Playwright 또는 확장 프로그램을 통해 인증을 처리하세요.

SOCKS5로 전환하면 터널 오류가 해결되나요?

구매하신 주문이 SOCKS5인 경우에만 해당됩니다. VinaProxy는 HTTP(S)와 SOCKS5를 모두 제공하므로 대시보드에 명시된 프로토콜을 선택하세요. 프로토콜이 일치하지 않으면 다른 오류가 발생합니다.

Puppeteer 및 Playwright와 완벽 호환되는 프록시

VinaProxy 프록시는 주요 자동화 라이브러리에서 별도 설정 없이 바로 연동되는 표준 user:pass 인증 방식을 사용합니다.

요금제 보기

관련 글

프록시 오류
407 Proxy Authentication Required 오류 해결 방법
407 Proxy Authentication Required 오류는 프록시 서버에 연결되었으나 로그인이 거부되었음을 의미합니다. 실제 curl 출력 예시와 발생 원인, 앱별 해결 방법을 확인해 보세요.
프록시 오류
프록시 502 Bad Gateway 오류: 원인 제공자 확인하기
프록시 사용 중 발생하는 502 Bad Gateway는 중간 서버가 유효한 응답을 받지 못했음을 의미합니다. 실제 curl 출력 결과를 바탕으로 프록시와 웹사이트 중 어디에 문제가 있는지 구별하는 방법을 알아보세요.
도구별 프록시 설정
Puppeteer에서 인증 프록시를 설정하는 방법 (Node.js 가이드)
Node.js Puppeteer에서 인증된 HTTP(S) 프록시를 설정하는 방법: --proxy-server 실행 옵션과 await page.authenticate()를 결합하여 안정적인 연결을 구현합니다.
도구별 프록시 설정
Playwright에서 프록시를 설정하는 방법 (브라우저 전역 및 Per-Context 인증)
Node.js 및 Python Playwright에서 인증된 HTTP(S) 프록시를 구성하세요. BrowserContext를 통해 단일 브라우저 내에서 여러 개의 독립된 고정 IP를 실행할 수 있습니다.
도구별 프록시 설정
Selenium WebDriver에서 인증된 프록시 설정하는 방법
selenium-wire 또는 Chrome onAuthRequired 확장 프로그램을 사용하여 Selenium WebDriver에서 인증된 HTTP(S) 프록시를 설정하는 방법.
무료 도구
프록시 체커: 온라인으로 프록시 확인하기
무료 프록시 체커: ip:port:user:pass 형식으로 최대 100개를 붙여넣고 작동 여부, 출구 IP, 지연 시간을 온라인으로 확인하세요. 오류별 의미도 알려 드립니다.
도구별 프록시 설정
Google Chrome에서 프록시를 설정하는 방법
Chrome 확장 프로그램, --proxy-server 명령어 옵션 또는 독립 프로필을 사용하여 전체 OS의 IP를 바꾸지 않고 Google Chrome 전용 VinaProxy HTTP(S) 프록시를 설정합니다.
도구별 프록시 설정
Windows 10 및 Windows 11에서 프록시 구성하는 방법
WinINET 시스템 설정, PowerShell 환경 변수 또는 netsh winhttp를 사용하여 Windows 10 및 Windows 11에서 VinaProxy HTTP(S) 프록시를 구성합니다.