クイックアンサー
プロキシ経由のリクエストが失敗した理由はどうやって調べますか?
まず誰が応答したのか確認してください:プロキシゲートウェイ(407、CONNECT失敗、一部の502や504)、ウェブサイト(401、403、429、ほとんどの503)、またはあなたのクライアント(TLSやタイムアウトエラー)。次に正確なメッセージを以下のページで照合します。このリファレンスは、15のエラーについて、CrawlRelayレジデンシャルプロキシや任意のHTTPまたはSOCKS5プロキシでスクレーパーが遭遇する問題とその修正コードを解説しています。
どのエラーを見ていますか?
症状を見つけてから、完全な診断のために該当ページを開いてください。
| 症状 | 送信元 | 再試行? | ページ |
|---|---|---|---|
407、『トンネル接続に失敗しました:407』 | プロキシ | いいえ | 407 Proxy Authentication Required |
401 と WWW-Authenticate 同時発生 | ウェブサイト | いいえ | 401 vs 407 |
403 ページまたはファイアウォールのメッセージ | ウェブサイト | 一度だけ、その後停止 | 403 Forbidden |
429、多くの場合 Retry-After と共に発生 | ウェブサイト | はい、後で再試行 | 429 Too Many Requests |
502、『CONNECTトンネル失敗、応答502』 | プロキシまたはCDN | はい、新しい出口IPで再試行 | 502 Bad Gateway |
503、メンテナンスまたはチャレンジページ | ウェブサイトまたはCDN | はい、バックオフ付きで再試行 | 503 Service Unavailable |
504 | プロキシまたはCDN | 一度か二度試す | 504 Gateway Timeout |
net::ERR_TUNNEL_CONNECTION_FAILED | ブラウザ(プロキシがCONNECTを拒否) | 原因を修正後に再試行 | ERR_TUNNEL_CONNECTION_FAILED |
net::ERR_PROXY_CONNECTION_FAILED | ブラウザ(プロキシに接続できない) | いいえ | ERR_PROXY_CONNECTION_FAILED |
ProxyError: Unable to connect to proxy | Pythonクライアント | 原因による | プロキシに接続できません |
[SSL: WRONG_VERSION_NUMBER] | あなたのTLSライブラリ | いいえ | SSL: WRONG_VERSION_NUMBER |
CERTIFICATE_VERIFY_FAILED | あなたのTLSライブラリ | いいえ | 証明書の検証に失敗しました |
ReadTimeout、 '読み取りタイムアウト' | あなたのクライアント | はい、新しい出口IPで再試行 | 読み取りタイムアウト |
ECONNRESET、 'ソケットが切断されました', 'ピアによって接続がリセットされました' | ネットワーク | はい、安全なリクエストです | 接続がリセットされました |
| 'SOCKSサポートの依存関係が不足しています', curl エラー 97 | クライアントまたはSOCKSサーバー | 場合による | SOCKS5エラー |
タイプ別のすべてのエラー
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エラー
スクレイパーはどのエラーを自動的に再試行すべきですか?
自動で変化しうるものは再試行し、変化しないものは停止しましょう:
- 新しい接続で再試行: 502、504、接続リセットや読み取りタイムアウト。新しい接続は通常、異なるレジデンシャルプロキシの出口になります。
- 後で、遅く再試行: 429 と 503。
Retry-Afterを待つか、ジッター付きの指数的バックオフを行い、対象ホストの同時接続数を減らします。 - 一度だけ再試行し停止: 403。一度だけ新しいIPで再試行すると、フラグが立ったアドレスとサイトルールを区別できます。
- むやみに再試行しない: 407、401、TLSエラー、到達不能なプロキシ。これらは設定の問題です。
Pythonガイドでは、urllib3のRetryを使ったこれらのルールに従う再試行ポリシーを示しています。
エラーを簡単にデバッグできるようにログはどうとればいい?
失敗したリクエストごとに5つの項目をログに残します:URLのホスト、ステータスコードや例外クラス、セッションID(あれば)、最初のバイト到着時間、レスポンス本文の最初の200文字。本文でCDNやファイアウォール、プロキシのいずれがエラーページを書いたか判別できます。ホストごと・ステータスごとに毎分エラー件数をカウントしましょう。一つのホストだけ急増すればそのサイトの変更、全ホストで急増すればセットアップまたはネットワークの問題です。
エラーリファレンス:よくある質問
エラーがプロキシ由来かウェブサイト由来かどうやって判断する?
どの段階で起きたかを見ます。curl -vでTLSハンドシェイク前に発生するCONNECT段階のエラーはプロキシ由来です:407やCONNECTでの502、504など。TLSハンドシェイク後にステータスが届き、サイトのヘッダーやHTMLが含まれるものはウェブサイト由来です。タイムアウトやTLS失敗などのクライアントエラーは自身のコードかネットワークが原因です。
失敗したリクエストも課金されますか?
トラフィックはゲートウェイを通過したバイト数で計測されるため、ウェブサイトに届かない407などのエラー応答はほとんど流量にカウントされません。サイトからのブロックページは通常のレスポンスで他のページと同じくらいのサイズです。設定ミスを早期に修正し、403や429時に速度制限をかけて両方を削減しましょう。
レジデンシャルプロキシを使うスクレイパーの正常なエラー率はどのくらい?
対象により異なります。Proxywayの2026年調査によると、レジデンシャルプロキシネットワークの中央値成功率は99.28%ですが、Amazon、Google、Instagramなどの保護された実際のターゲットでは74.43%でした。自身のターゲットを計測し率を経時的に追跡してください:突然の変化が絶対値より重要です。