スクレイピングにおける403エラーの理解:原因、修正方法、及び指標

403エラーは、ターゲットページが通常のブラウザでアクセス可能に見える場合でも、スクレイピングパイプラインを停止させる可能性があります。スクレイパーはリクエストを送信し、サーバーはそれを理解しますが、応答は403 Forbiddenとして返されます。スケールで見ると、これらの失敗はデータの新鮮さを低下させ、リトライを増加させ、インフラストラクチャの支出を増やし、レポートの信頼性を低下させます。
ウェブスクレイピングプロキシ、ブラウザ自動化、SEOモニタリング、価格追跡、または市場インテリジェンスパイプラインを使用しているチームにとって、403エラーは通常、リクエストパスに何か問題があることを示す信号です。問題は、プロキシルート、リクエストヘッダー、ブラウザフィンガープリント、クッキー、地理的位置、リクエストレート、またはターゲットサイトのアクセスルールに起因する可能性があります。
403エラーを修正するには、診断から始めます。すぐにプロキシプロバイダーを切り替えたり、リトライの深さを増やしたりしないでください。まず、問題がアイデンティティ、ペーシング、ルーティング、認証、セッション状態、地理的不一致、またはターゲット側の制限から来ているかを特定します。
403エラーとは何ですか?
403 Forbiddenの応答は、サーバーがリクエストを受け取ったが、リソースを提供することを拒否したことを意味します。
これは401 Unauthorizedの応答とは異なります。401は通常、認証が欠落しているか無効であることを意味します。403は、サーバーがリクエストを理解したが、アクセスを許可しないことに決めたことを意味します。
スクレイピングワークフローでは、403エラーは通常、次のような場合に発生します:
- IPルートがブロックされている
- プロキシASNがフラグ付けされている
- リクエストレートが高すぎる
- 必要なヘッダーが欠落している
- クッキーまたはCSRFトークンが欠落している
- リクエストが期待されるページフローをスキップしている
- ブラウザフィンガープリントが自動化されているように見える
- リクエストされた国または地域が許可されていない
- ターゲットにボット対策がある
- セッションが予期せずIPを変更した
403は必ずしもプロキシの問題ではありません。これはしばしばフルスタックの一貫性の問題です。
簡単な回答:スクレイピングにおける403エラーの修正方法
403エラーを修正するには、3つのレイヤーを整合させます:
- アイデンティティ — ヘッダー、TLSの動作、クッキー、ブラウザプロファイル、セッション状態は一貫している必要があります。
- ペーシング — リクエストレート、同時実行、リトライ、タイミングは不必要なプレッシャーを生み出さないようにする必要があります。
- ルーティング — プロキシタイプ、地理的位置、ASN、セッションの一貫性はターゲットワークフローと一致する必要があります。
その後、成功率、ブロック率、リトライの深さ、セッションの生存率、地理的精度、CPSRを通じて結果を測定します。
CPSRは、成功したリクエストあたりのコストを意味します。
平たく言えば:CPSRは、プロキシ支出、コンピュート、ブラウザレンダリング、リトライ、失敗した試行の後に、各有効な結果のコストを教えてくれます。
なぜ403エラーが重要なのか
いくつかの403応答は無害に見えるかもしれません。しかし、プロダクションスケールでは、実際の運用上およびビジネス上の問題を引き起こします。
403エラーは次のような問題を引き起こす可能性があります:
- 製品価格の欠落
- 古い在庫データ
- 不完全なSERPレポート
- 遅延した市場インテリジェンス
- 壊れたダッシュボード
- 高いリトライボリューム
- 増加したプロキシ支出
- レポートへの信頼の低下
- クロール完了の遅延
- 高いエンジニアリングメンテナンス
システムがすべての403を盲目的にリトライする場合、コストは迅速に上昇し、カバレッジが改善されることはありません。より良いアプローチは、原因を分類し、適切な修正を適用することです。
スクレイピングにおける403エラーの一般的な原因
IPの評判またはプロキシタイプ
一部のウェブサイトは、特定のIP範囲に対してより厳しいルールを適用します。ホスティングおよびクラウドASNは、小売、旅行、金融、マーケットプレイスサイトで消費者ISPルートよりも多くの摩擦を受ける可能性があります。
データセンタープロキシは、公開ページ、低摩擦ターゲット、API、サイトマップ、および高ボリューム収集に対してうまく機能することがあります。しかし、より強力な制御を持つ消費者向けサイトでは、より多くの403応答を引き起こす可能性があります。
レジデンシャルプロキシは、ターゲットが消費者のようなトラフィック、位置の正確さ、またはセッションの信頼を期待する場合に、より良いパフォーマンスを発揮する可能性があります。
プロキシタイプの選択については、データセンター vs レジデンシャル vs ISPプロキシの説明を参照してください。
リクエストレートと同時実行性
403エラーの一般的な原因は、トラフィックの圧力です。
トリガーには以下が含まれます:
- IPごとのリクエストが多すぎる
- サブネットごとのリクエストが多すぎる
- 一つのドメインへの高い同時実行性
- バースト的なcronジョブ
- 失敗後の繰り返しリトライ
- 深い商品ページを急速にクロールする
- 敏感なエンドポイントに頻繁にアクセスする
ターゲットは、遅い通常のアクセスを許可するが、急速、繰り返し、または同期されたアクセスをブロックすることがあります。
ヘッダーとクライアントの不一致
ヘッダーは、主張されたクライアントと一致しない場合に自動化を露呈させることがあります。
例には以下が含まれます:
- ブラウザヘッダーが欠けた現代のChromeユーザーエージェント
- プロキシの場所と矛盾するAccept-Language
- デスクトップのビューポート動作を持つモバイルユーザーエージェント
- 期待されるRefererがない
- 一貫性のないAccept-Encoding
- 異常なヘッダー順序
- 各セッションでの繰り返し同一ヘッダー
ヘッダーは現実的で一貫性があるべきです。ランダム化が常に良いわけではありません。安定した一貫したプロファイルは、ノイズの多いヘッダー回転よりも通常はパフォーマンスが良いです。
TLSおよびHTTPフィンガープリンティングの問題
ウェブサイトは、ページコンテンツが読み込まれる前にTLSおよびHTTPの動作を評価することがあります。
リクエストはユーザーエージェントでChromeを主張できますが、TLSまたはHTTP/2レイヤーでChromeとは異なる動作をすることがあります。その不一致が403レスポンスに寄与することがあります。
これは、実際のブラウザではなく軽量HTTPクライアントを使用する場合に特に重要です。クライアントライブラリ、TLSバージョン、暗号順序、ALPN動作、HTTP/2設定が、宣言されたブラウザと一致しないフィンガープリントを作成する可能性があります。
クッキーまたはセッション状態の欠如
一部のページはセッションコンテキストを必要とします。深いURLに直接ジャンプするスクレイパーは、クッキー、CSRFトークン、署名されたパラメータ、同意状態、リダイレクトステップを見逃す可能性があります。
これは以下で一般的です:
- 商品詳細ページ
- カート
- チェックアウトページ
- 旅行検索結果
- ダッシュボード
- アカウントページ
- 署名されたアセット
- JavaScriptレンダリングフロー
ブラウザがページに正常に到達しても、スクレイパーが403を受け取る場合、欠けている部分はセッション状態かもしれません。
ブラウザフィンガープリンティング
ブラウザの自動化は、フィンガープリントが非現実的または一貫性がない場合に403を引き起こすことがあります。
ウェブサイトは以下を検査することがあります:
- ユーザーエージェント
- ブラウザバージョン
- スクリーンサイズ
- タイムゾーン
- 言語
- WebGL
- キャンバス
- フォント
- プラグイン
- WebRTCの動作
- 自動化フラグ
- ローカルストレージ
- クッキーの動作
良いプロキシは悪いブラウザプロファイルを自動的に修正するわけではありません。より深いコンテキストについては、ウェブスクレイピングのためのブラウザフィンガープリンティングを参照してください。
地理的制限とロケールの不一致
一部のウェブサイトは、国、地域、市、通貨、または店舗によってアクセスを制限または変化させます。リクエストがブロックされた地域から来る場合や、信号が矛盾する場合に403が表示されることがあります。
例:
- プロキシが一国に出口しているが、ブラウザのタイムゾーンが別の国
- 店舗のクッキーがカナダを示しているが、IPがドイツにある
- Accept-Languageがターゲット市場と矛盾する
- 送料地域とプロキシの場所が一致しない
- セッションがフローの途中で国を移動する
地理的に敏感なスクレイピングの場合、プロキシプロバイダーの位置ラベルだけでなく、返されたコンテンツを検証してください。
WebRTCまたはDNSリーク
ブラウザベースのスクレイピングは、ネットワーク信号がプロキシルートの外に漏れると失敗する可能性があります。
WebRTC、DNS、またはローカルネットワークの動作がプロキシIPとは異なるルートを露呈させる場合、セッションは一貫性がないように見えることがあります。
ブラウザワークフローの場合、スケーリングする前にIP、DNS、WebRTC、タイムゾーン、言語、返された地域を検証してください。詳細については、WebRTCリーク:なぜそれがアンチディテクトセットアップを壊すのかを参照してください。
迅速なトリアージ:403の原因を見つける
大規模なインフラ変更を行う前に、このプロセスを使用してください。
ステップ1:クリーンブラウザのベースラインをテストする
通常のネットワークから通常のブラウザで同じURLを開いてください。ページが正常に動作するが、スクレイパーでは失敗する場合、問題はリクエストのアイデンティティ、プロキシルート、セッション状態、または動作にある可能性が高いです。
ステップ2: プロキシタイプの比較
以下を通じて同じリクエストをテストしてください:
- 直接ネットワーク
- データセンタープロキシ
- レジデンシャルプロキシ
- 利用可能な場合はISPプロキシ
- 対象国ルート
データセンターのルートのみが失敗する場合、IPの評判またはASNポリシーが問題かもしれません。
ステップ3: 同時実行数の削減
短いテストウィンドウのために同時実行数を大幅に下げてください。403エラーが減少する場合、問題はレート、バースト性、または再試行の圧力にある可能性があります。
ステップ4: ヘッダーとクッキーの確認
リクエストヘッダーを通常のブラウザリクエストと比較してください。クッキー、Referer、CSRFトークン、およびリダイレクトが正しく処理されていることを確認してください。
ステップ5: ブラウザフィンガープリンティングの検証
ブラウザ自動化を使用している場合、User-Agent、ビューポート、タイムゾーン、言語、WebRTCの動作、およびプロキシの位置が一貫していることを確認してください。
ステップ6: レスポンスボディの検査
すべてのブロックが明確にラベル付けされているわけではありません。一部のページは一般的なアクセス拒否テンプレート、同意の壁、またはソフトブロックコンテンツを返します。
常にレスポンスHTMLと必要なフィールドを検査してください。
403診断テーブル
| 症状 | 考えられる原因 | より良い対応 |
|---|---|---|
| データセンタープロキシのみで403 | ASNまたはIPの評判の問題 | レジデンシャルまたはISPルートをテストする |
| いくつかの迅速なリクエストの後の403 | レートまたは同時実行の閾値 | 同時実行数を減らし、ジッターを追加する |
| 深いURLでの403 | セッション、Referer、またはトークンの欠如 | 完全なページフローに従い、クッキーを保持する |
| ブラウザ自動化のみでの403 | フィンガープリンティングまたはWebRTCの問題 | ブラウザプロファイルを調整し、リークをテストする |
| 特定の国での403 | 地理的制限 | 許可された市場からルートを取る |
| ログイン後の403 | セッション/IPの不一致 | スティッキーまたは静的セッションを使用する |
| 再試行中の403 | 再試行の圧力 | バックオフを追加し、再試行の深さを制限する |
| 通常のブラウザヘッダーでの403 | TLS/クライアントの不一致 | 実際のブラウザの動作に近いクライアントスタックを使用する |
403エラーの修正方法
リクエストアイデンティティの整合
一貫したクライアントプロファイルを作成してください。
それは意味します:
- 現実的なUser-Agent
- 一致するAccept-Language
- 一致するタイムゾーン
- 必要に応じた期待されるReferer
- 一貫したクッキー
- ブラウザのようなヘッダー
- 矛盾するデバイス信号がない
- セッションごとに安定したプロファイル
すべてのリクエストで毎フィールドをランダム化することは避けてください。実際のユーザーはブラウザのアイデンティティを常に変更しません。
正しいプロキシタイプを使用
プロキシルートを作業負荷に合わせてください。
データセンタープロキシを使用する場合:
- 公開ページ
- 許可されているAPIまたはフィード
- サイトマップ
- 低摩擦のスクレイピング
- 高ボリュームの静的収集
レジデンシャルプロキシを使用する場合:
- 消費者向けページ
- ローカライズされたコンテンツ
- eコマース製品ページ
- ローカルSEOモニタリング
- 地域の価格設定
- データセンター範囲をブロックするターゲット
静的またはスティッキーなルートを使用する場合:
- ログイン
- カート
- ダッシュボード
- マルチステップワークフロー
- サイン付きURL
- ページネーション
- ストアフロントセッション
ルートの動作については、ローテーション対静的プロキシを参照してください。
ペースと同時実行数を制御
技術的に正しいリクエストでも、ボリュームが攻撃的すぎると403エラーを引き起こす可能性があります。
使用する:
- ドメインごとの同時実行数制限
- キューに基づくスケジューリング
- ランダム化されたタイミング
- 指数バックオフ
- 再試行予算
- サーキットブレーカー
- ブロック後のクールダウン
ブロックの原因となった条件を変更せずに403エラーを繰り返し再試行しないでください。
セッション状態を保持
ターゲットがセッションを期待する場合、それを安定させてください。
保持してください:
- クッキー
- ローカルストレージ
- CSRFトークン
- リダイレクト状態
- 同意状態
- ストア地域
- ブラウザプロファイル
- プロキシルート
セッションに敏感なワークフローの途中でIPを回転させないでください。セッションがそれに対応している場合を除きます。
ジオとロケールの検証
ページが位置情報に依存している場合、すべての位置情報シグナルを整合させます。
確認項目:
- プロキシの国または都市
- ブラウザのタイムゾーン
- Accept-Language
- ストアフロントの選択
- 通貨
- 配送地域
- 返されたページコンテンツ
403は、位置情報の不一致に対するポリシー応答である可能性があり、一般的なスクレイパーブロックではありません。
ソフトブロックの検出
一部のシステムは403を返しません。HTTP 200を返し、不正なコンテンツを提供します。
例:
- 空の製品ページ
- 価格フィールドが欠落
- 一般的な検索ページ
- CAPTCHAページ
- アクセス拒否のHTML
- 間違った地域のコンテンツ
- 同一のテンプレートの繰り返し
ソフトブロックは真の成功とは別に扱います。応答は、期待されるデータを含む場合のみ成功と見なされます。
より広範なトラブルシューティングについては、一般的なプロキシエラーとその修正方法を参照してください。
何をしないべきか
以下の一般的な間違いを避けてください:
- 403を無限に再試行する
- ログイン中にIPを回転させる
- すべてのページに対して1つのプロキシタイプを使用する
- ランダムなヘッダーを送信する
- TLSとブラウザフィンガープリンツを無視する
- HTTP 200を成功と見なす
- ディープリンクのセッション設定をスキップする
- ブロック率を測定する前にスケールする
- CPSRを確認せずにどこでも住宅プロキシを使用する
- コンプライアンスとターゲットアクセスルールを無視する
規律あるアプローチは、通常、攻撃的な試行錯誤よりも優れています。
測定すべきこと
403を完全な信頼性ダッシュボードの一部として追跡します。
| メトリック | 重要な理由 |
|---|---|
| 403率 | 直接の禁止応答を示します |
| ブロック率 | 403、CAPTCHA、429、およびチャレンジページをキャプチャします |
| ソフトブロック率 | 成功として返された無効なコンテンツを検出します |
| 成功率 | 有効な出力を測定します |
| 再試行深度 | 隠れた摩擦を示します |
| CPSR | 成功した結果あたりのコストを測定します |
| セッション生存 | マルチステップフローが完了するかどうかを示します |
| ジオ精度 | 位置情報に敏感なデータが有効であることを確認します |
| P95レイテンシ | ルート圧力やスロットリングを検出します |
| ルートパフォーマンス | プロキシタイプと地域を比較します |
ドメイン、ページタイプ、プロキシタイプ、地域、ワークロードごとに測定します。平均値は実際の問題を隠します。
実際のシナリオ: 小売価格監視
価格監視チームは、複数の小売業者から製品価格を収集します。
初期設定ではデータセンタープロキシを使用し、すべてのジョブを毎時のトップで実行します。大規模なセール中に403が急増し、再試行が増え、ダッシュボードには価格が欠落していることが表示されます。
チームはワークフローを改善するために:
- 時間ウィンドウにわたってジョブをずらす
- ドメインごとの同時実行数を減らす
- 敏感な製品ページを住宅プロキシに移動する
- 地域のストアフロントチェックのためにスティッキーセッションを使用する
- データを保存する前に価格、通貨、製品タイトルを検証する
403率が低下し、CPSRが改善されます。なぜなら、無駄な再試行が減るからです。
実際のシナリオ: 旅行検索データ
旅行データチームは、異なるルートと都市の運賃結果を収集します。
スクレイパーは、最初にセッションを確立することなく、直接深い結果のURLにジャンプします。一部のアセットとAPIコールは、必要なトークンが欠落しているため403を返します。
改善されたワークフローは、初期検索ページを読み込み、クッキーを保持し、リダイレクトに従い、トークンをキャプチャし、完全な検索フローのためにスティッキーセッションを使用します。
セッション生存が改善され、再試行深度が低下します。
実際のシナリオ: ローカルSEO監視
SEOプラットフォームは、多くの都市でローカルSERPを収集します。
一部のリクエストは、特定の地域からのみ403を返します。チームは、プロキシの位置、Accept-Language、および検索パラメータが不一致であることを発見します。
修正には、都市をターゲットにした住宅ルート、整合した言語設定、および返されたローカルパックデータに基づくジオバリデーションが含まれます。
レポートは、収集エラーが真のランキングの動きから分離されるため、より安定します。
コンプライアンスと責任ある収集
403レスポンスは、アクセスが制限されていることを示す信号でもあります。
技術的な修正を試みる前に、以下を確認してください:
- ページが公開されていること
- 収集が内部ポリシーによって許可されていること
- 適用される法律および規約が確認されていること
- 認証情報が誤用されていないこと
- 不必要に個人データが収集されていないこと
- 公式APIまたはパートナーフィードが考慮されていること
保護されたまたは制限された領域での持続的な403は、エスカレーションではなくアクセスレビューを引き起こすべきです。
ベストプラクティスチェックリスト
403のトラブルシューティング時にこのチェックリストを使用してください:
- クリーンなブラウザでページが機能することを確認します。
- プロキシの種類と地域を比較します。
- レスポンスHTMLを検査します。
- ハードブロックとソフトブロックを分けます。
- テスト中の同時実行を減らします。
- ヘッダー、クッキー、ブラウザプロファイルを整合させます。
- ステートフルフローのためにスティッキーセッションを使用します。
- ジオとロケールを検証します。
- 成功率だけでなくCPSRを追跡します。
- リトライを制限します。
- 失敗サンプルを保存します。
- ターゲットまたはクライアントの変更後に再テストします。
実装のヘルプについては、SquidProxiesの プロキシチュートリアル およびより広範な プロキシユースケース を確認してください。
よくある質問
スクレイピングで403エラーが発生する原因は何ですか?
403エラーは通常、ターゲットがIPの評判、セッション状態の欠如、レート制限、ブラウザフィンガープリンティングの問題、ジオ制限、無効なヘッダー、またはアクセス制御に基づいてリクエストを拒否するために発生します。
403は常にプロキシが原因ですか?
いいえ。403はヘッダー、クッキー、トークン、リクエストレート、TLSの動作、ブラウザフィンガープリンティング、またはターゲット側のアクセスルールによって引き起こされることがあります。
403エラーを迅速に修正するにはどうすればよいですか?
まず同時実行を減らし、クリーンなブラウザのベースラインをテストし、プロキシの種類を比較し、ヘッダーとクッキーを確認し、レスポンスボディを検査します。その後、失敗パターンに基づいて最小の修正を適用します。
403エラーを修正するために住宅プロキシを使用すべきですか?
住宅プロキシは、データセンターのルートがブロックされている場合やジオの正確性が重要な場合に役立ちます。しかし、悪いヘッダー、欠落したクッキー、攻撃的なリクエストタイミング、またはブラウザフィンガープリンティングの問題を修正することはできません。
ページはブラウザで機能するが、スクレイパーでは機能しないのはなぜですか?
ブラウザは一貫したヘッダーを送信し、クッキーを処理し、リダイレクトに従い、JavaScriptを実行し、セッション状態を維持します。スクレイパーは、これらのレイヤーの1つまたは複数をスキップする可能性があります。
403の後に再試行すべきですか?
慎重に再試行してください。バックオフを使用し、ルート、セッション、またはペーシングなどの関連条件を変更します。同じリクエストで繰り返し再試行しないでください。
ヘッドレスブラウザは403エラーを減らすことができますか?
JavaScriptの実行、クッキー、またはブラウザの動作が必要な場合に役立ちます。しかし、ヘッドレスブラウザは一貫したフィンガープリンティング、ペーシング、およびプロキシルーティングを持っている必要があります。
どのメトリックを監視すべきですか?
403率、ブロック率、ソフトブロック率、成功率、リトライ深度、CPSR、セッション生存、ジオの正確性、レイテンシー、およびルートパフォーマンスを追跡します。
最後の考え
スクレイピングにおける403エラーはランダムではありません。通常、ターゲットがルート、アイデンティティ、動作、セッション状態、位置、またはアクセスポリシーに基づいてリクエストを拒否する場合に発生します。
最良の修正は診断から始まります。問題がIPの評判、ペーシング、ヘッダー、TLS、クッキー、ブラウザフィンガープリンティング、ジオミスマッチ、またはアクセス制御であるかを特定します。その後、ターゲットを絞った変更を適用し、有効な出力が改善されるかどうかを測定します。
強力なスクレイピングインフラストラクチャは、無限のリトライに依存しません。一貫したアイデンティティ、責任あるペーシング、適切なプロキシルーティング、セッションの安定性、コンテンツの検証、および明確なメトリックを使用します。
小さく始め、慎重にテストし、ブロック率とCPSRを減少させながらデータの質を維持する修正のみをスケールアップします。


