プロキシ利用時の ERR_TUNNEL_CONNECTION_FAILED の解決方法

更新日:

プロキシ経由で https:// ページを読み込む際、ブラウザは CONNECT リクエストを送信し、プロキシが対象サイトへのトンネルを開くのを待機します。プロキシが接続を確立せずエラーで応答すると、ERR_TUNNEL_CONNECTION_FAILED が表示されます。ただし Chrome には具体的なエラー内容が表示されないため、まずは実際のエラーコードを特定する必要があります。

Puppeteer や Playwright で快適に動くプロキシ

再現された2つのケース

どちらもテスト用プロキシ(ドキュメント用アドレス 203.0.113.10:8080、user123:pass456 に置き換え)で検証した結果です。通常の Chrome ウィンドウでは、407 の場合トンネルエラーにはならず、プロキシのユーザー名とパスワードを求めるログインダイアログが表示されます。そのため、407 によるトンネルエラーは、主に自動化ツールやパスワード入力ダイアログを表示できないアプリで発生します。

プロキシの CONNECT 応答Chrome の表示curl の表示
パスワード入力手段がない 407(ヘッドレス Chrome)ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 407
プロキシがサイトに到達できない場合の 502ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 502

主な原因(可能性が高い順)

  • 自動化スクリプトで認証情報が送信されていない: Chrome の --proxy-server フラグはホストとポートのみを受け付け、user:pass には対応していません。そのため、ヘッドレス Puppeteer や Selenium は 407 を受け取り、トンネルエラーを報告します。
  • パスワード保護された Wi-Fi プロキシ環境下のスマートフォンアプリ: アプリ側に入力ダイアログがないため、ブラウザは動作してもアプリの HTTPS 通信が失敗します。
  • プロキシが接続先ターゲットに到達できない: CONNECT に対して 502 を返します。詳しくは 502 Bad Gateway ページ を参照してください。
  • 特定のサイトのみ失敗する: 同じプロキシ経由で他のサイトにはアクセスできる場合、接続先サイトがブロックしているかダウンしています。

1行の 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 を確認する

    トンネルが開いたら、同じブラウザで my 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 でプロキシを設定する方法(ブラウザ全体 & コンテキスト別認証)
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)プロキシを構成します。