クイックアンサー
プロキシでの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で確認できます。
ERR_TUNNEL_CONNECTION_FAILEDはPython、curl、Node.js、ブラウザではどのように表示されますか?
同じ失敗でもツールごとに異なる表示になります。ログ検索用のメッセージは以下の通りです:
- 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をcurlで
-vを使って実行(下記コマンド)し、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(HTTP、HTTPSはCONNECT経由)、ポート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プロキシをサポートしていますが、ユーザー名・パスワード認証のSOCKS5は不可です。代わりにCONNECTトンネル経由でHTTPSを処理するゲートウェイの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エラー
失敗ケースを網羅したドキュメント付きレジデンシャルプロキシ
$0.50/GB発のCrawlRelayレジデンシャルプロキシ、期限切れがないトラフィック。