빠른 답변
프록시에서 ERR_TUNNEL_CONNECTION_FAILED는 무엇을 의미하나요?
net::ERR_TUNNEL_CONNECTION_FAILED 는 Chrome이 프록시에 HTTPS 사이트로 터널을 열도록 요청했으나 프록시가 200 Connection established으로 응답하지 않았음을 의미합니다. 브라우저는 실제 상태 코드를 숨깁니다. CrawlRelay 주거용 프록시에서는 Playwright 또는 Puppeteer에서 자격 증명 누락, 또는 게이트웨이가 도달할 수 없는 대상이 원인입니다. curl -v로 재현해 실제 코드를 확인하세요.
ERR_TUNNEL_CONNECTION_FAILED 한눈에 보기
| 오류 | ERR_TUNNEL_CONNECTION_FAILED |
|---|---|
| 유형 | Chromium 네트워크 오류 |
| 전송 주체 | 프록시가 CONNECT 요청을 거부하거나 실패한 후 브라우저에서 발생 |
| 정의 위치 | CONNECT method: RFC 9110, section 9.3.6 |
| 다시 시도할까요? | 상태 코드를 확인한 후에만 재시도 권장 |
| 먼저 확인하세요 | curl -v로 재현하여 실제 CONNECT 상태 확인 가능 |
ERR_TUNNEL_CONNECTION_FAILED가 무엇을 의미하나요?
HTTP 프록시를 통해 HTTPS 페이지를 로드하려면 브라우저가 먼저 CONNECT host:443을 보냅니다. 프록시가 200으로 응답하면 터널 내부에서 TLS가 시작됩니다. 407, 403, 502 등 다른 응답은 시도를 종료하며 Chromium은 일반적인 오류를 보고합니다.
이 오류는 실패 위치가 터널임을 알려주나 이유는 알리지 않습니다. 이유는 프록시가 보낸 상태 코드이며 curl로 확인할 수 있습니다.
Python, curl, Node.js, 브라우저에서 ERR_TUNNEL_CONNECTION_FAILED는 어떻게 나타나나요?
같은 실패가 도구마다 다르게 출력됩니다. 로그에서 검색할 메시지들:
- Playwright:
page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Puppeteer:
Error: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Chrome 주소 표시줄: '이 사이트에 연결할 수 없음'이며 코드
ERR_TUNNEL_CONNECTION_FAILED가 표시됨 - Chrome에서 Selenium:
WebDriverException내 같은 코드
ERR_TUNNEL_CONNECTION_FAILED의 원인은 무엇인가요?
가장 가능성 높은 첫 번째 원인:
- 자격 증명 전송 안 됨 (숨은 407). Chrome은
--proxy-server안에 있는 사용자 이름과 비밀번호를 무시합니다. - 거부된 대상 (숨은 403), 예를 들어 프록시 사용 정책에 의해 차단된 카테고리.
- 도달 불가능한 대상 (숨은 502 또는 504): 죽은 호스트, 오타 또는 출구에서의 DNS 실패.
- 잘못된 포트: 브라우저에서 SOCKS5 포트를 HTTP인 것처럼 가리키거나 그 반대의 경우.
ERR_TUNNEL_CONNECTION_FAILED를 단계별로 진단하는 방법은?
- 동일한 URL을
-v로 curl 실행(아래 명령 참고)하고,CONNECT다음 줄을 확인하세요. 407는 자격 증명 문제,403은 거부된 대상,502또는504는 대상 또는 출구 문제를 의미합니다.http://프록시 서버에 HTTP 포트를 사용하는지 확인하세요.- 실제 대상 전에
https://api.ipify.org같은 간단한 페이지를 테스트하세요.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URLERR_TUNNEL_CONNECTION_FAILED를 어떻게 고치나요?
- Playwright: 브라우저나 컨텍스트별로
proxy옵션에server,username,password전달. Playwright 가이드 참고. - Puppeteer:
--proxy-server=http://host:port옵션으로 실행하고 첫goto전에page.authenticate()호출. Puppeteer 가이드 참고. - Selenium: 자격 증명을 추가하는 작은 로컬 포워더 실행. Selenium 가이드 참고.
- 대상을 허용 사용 정책에 맞게 확인하세요.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://gw.crawlrelay.com:7777",
"username": "USERNAME-country-us",
"password": "PASSWORD",
})
page = browser.new_page()
response = page.goto("https://api.ipify.org")
print(response.status, page.inner_text("body"))
browser.close()ERR_TUNNEL_CONNECTION_FAILED 이후에 다시 시도해야 하나요?
숨은 상태를 알 때만 재시도하세요. 숨은 407이나 403은 무한 반복되니 설정을 수정해야 합니다. 숨은 502나 504는 게이트웨이 오류처럼 새 출구에서 재시도할 수 있습니다.
ERR_TUNNEL_CONNECTION_FAILED가 CrawlRelay에 어떻게 적용되나요?
CrawlRelay의 HTTP 포트는 CONNECT 터널을 통해 HTTPS를 전달하며, 모든 Chromium 기반 도구가 지원합니다. 브라우저에는 HTTP 포트를 사용하세요: Chromium은 사용자 이름과 비밀번호가 있는 SOCKS5를 지원하지 않습니다.
게이트웨이: gw.crawlrelay.com, 포트 7777 (CONNECT를 통한 HTTP, HTTPS) 및 포트 7778 (SOCKS5). 사용자 이름 형식: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. 관련: 407 Proxy Authentication Required · ERR_PROXY_CONNECTION_FAILED · Playwright 가이드.
ERR_TUNNEL_CONNECTION_FAILED: 개발자들이 묻는 질문들
왜 curl은 작동하지만 Playwright는 ERR_TUNNEL_CONNECTION_FAILED를 표시하나요?
curl은 프록시 URL에서 자격 증명을 전송하지만 Chromium은 프록시 서버 주소에 포함된 자격 증명을 무시하기 때문입니다. Playwright에서는 username와 password을 proxy 옵션의 별도 필드로 전달하세요. Puppeteer에서는 탐색 전에 page.authenticate()를 호출하세요.
Chrome에서 인증 있는 SOCKS5 프록시를 사용할 수 있나요?
직접적으로는 아닙니다. Chromium은 SOCKS5 프록시를 지원하지만 사용자 이름과 비밀번호 인증은 지원하지 않습니다. HTTPS 사이트를 CONNECT 터널로 처리하는 게이트웨이의 HTTP 포트를 사용하거나, 브라우저를 위한 인증 로컬 포워더를 실행하세요.
ERR_TUNNEL_CONNECTION_FAILED는 웹사이트 때문인가요?
직접적으로는 거의 아닙니다. 터널은 브라우저와 프록시 사이에 형성되므로, 오류는 TLS 핸드셰이크 전에 발생합니다. 웹사이트가 도달 불가능해서 프록시가 CONNECT 요청에 502 또는 504를 응답할 때 간접적 원인이 될 수 있습니다.
이 참조에서 다른 프록시 오류들
HTTP 상태 코드
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
브라우저 및 클라이언트 오류
연결 및 TLS 오류
실패 사례를 다루는 문서가 있는 레지덴셜 프록시들
US$0.50/GB의 레지덴셜 프록시 CrawlRelay개, 트래픽이 절대 만료되지 않음.