クローラーのトラブルシューティング
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックは、クローラーが失敗する一般的なエラーを診断し解決するのに役立ちます。
クロールが即座に失敗するか、URLがクロールされない
クロールが開始されずURLが処理されない場合、通常クローラーは設定された制限内でサイトマップの取得や処理ができません。これは通常、ターゲットサイトにとってトリガータイムアウトが不足しすぎる場合に発生します。サイトマップの取得と処理に十分な時間を確保するために、トリガータイムアウトをデフォルトの1,000ms(1秒)から10〜60秒に延長してください。
クローラーはページ取得中にタイムアウトします
クローラーがコンテキストの締め切り超過(クライアントのタイムアウトがヘッダー待ち中)などのエラーを報告した場合、ターゲットサイトが許可された時間内に応答しなかったことを示します。ウェブクローラーのタイムアウトは意図的に寛大で、通常は到達すべきではありません。ほとんどのページは数秒以内に応答します。大量のPDFダウンロードなど大規模なリソースが必要な場合でも、応答は数分以内に完了するはずです。
ページが繰り返しこのタイムアウトに近づく場合、問題は通常クローラー自体ではなく、サーバーのパフォーマンス、ネットワーク制限、またはサイトやContent Delivery Network (CDN)によるボットブロックに起因します。クローラーのタイムアウトを増やしてもこれらの問題は解決せず、リソースの非効率化につながります。
エラーを修正するために:
- サーバーのパフォーマンスと応答時間を確認しましょう。
- ネットワークやファイアウォールの制限を確認してください。
- ホストやCDNのボットブロックやリクエストスロットリングのルールを調べてみてください。
個別のURL検証は成功しますが、クロールは失敗します
個々のURLの検証は動作しますが、フルクロールが失敗する場合、エラーは通常リクエスト量が原因です。単一のURLを検証するのは軽量なリクエストですが、クロールは短期間で数百から数千のリクエストを生成し、セキュリティ制御が発動しやすいです。
エラーを修正するために:
エラーメッセージは曖昧だったり誤解を招くものです
自動トラフィックをブロックしても、ウェブサイトは詳細なエラー応答を返す義務はありません。多くのウェブサイトはボット対策の一環として意図的に遅延や不明瞭なエラーを提供しています。これらの場合、クローラーが記録するHTTPステータスコードが最も信頼性の高い診断メッセージを提供します。
エラーを修正するために:
- 報告されたHTTPステータスコードを主要な指標として使用してください。
- 可能な限り、サーバー、CDN、またはウェブアプリケーションファイアウォール(WAF)ログを使って障害を調査してください。
Pagesは訪問されていますが、インデックスはされていません
ページが訪問済みとマークされていて「インデックスドドキュメント=0」や「訪問済み」> 0でクロール=0の場合、クローラーはページを読み込むことはできますが、コンテンツの抽出はできません。これは多くの場合、抽出セレクターの欠如や古いもの、JavaScriptレンダリング制限、ホスト/CDNアンチボットルールが原因です。この問題はVercelのようなプラットフォームでよく見られ、ヘッドレスクローラーが不完全または制限されたコンテンツを受け取ることがあります。
例えば、抽出器は以下のコンテンツを読み取ろうと試みることがあります:
$(".field-productshortdescription").html();
必要な要素が抽出時に存在しない場合、抽出器は結果を返さず、ページはクロールやインデックスされません。エラーを修正するために:
- サイトが静的またはサーバーレンダリングの場合は、 Render JavaScript を無効にして、生のHTMLに対して抽出を実行できるようにします。
- JavaScriptレンダリングは、シングルページアプリケーション(SPA)やコアコンテンツがクライアントサイドのみに読み込まれるページでのみ有効にしてください。
- ホスティングプラットフォームやホストCDNがアンチボット保護を適用している場合は、すべてのクローラーIPを許可リストにSitecore Searchしてください。
- 抽出セレクタが生のHTML(JavaScript OFF)とレンダリングされたDOM(JavaScript ON)の両方に存在するかを確認し、必要に応じてフォールバックを更新または追加してください。
- 顧客に、ボットブロックルール、JavaScript実行制限、WAFフィルター、レート制限、ジオフェンシング、認証、クッキーゲートなどのホストおよびCDNのセキュリティポリシーを確認するよう依頼してください。
デルタクロールの挙動が予想外です
最適化(デルタ)クロールはサイトマップの設定に基づいて試みられます。失敗したURLの数が許容閾値を超えると、デルタクロールは失敗し、次の実行は自動的にフルクロールにデフォルトとなります。インデックスされるページ数が予想より少なかったり、デルタクロールがデフォルトでフルクロールに移行した場合:
- サイトマップから無効またはアクセス不能なURLを削除してください。
- 繰り返し失敗するURLは除外してください。
部分的またはブロックされたコンテンツがインデックス化されています
不完全またはブロックされたページのインデックス化を避けるために、抽出器検証ロジックを設定して必須フィールドの存在を要求します。フィールドが欠落すると抽出に失敗し、文書はインデックスから除外されます。これにより、完全にレンダリングされアクセス可能なページのみが取り込まれることが保証されます。
推奨されるベースライン構成
クローラーが頻繁に動作する場合(例えば時間単位のスケジュールで)、繰り返しのリクエストはブロックの可能性を高めます。コンテンツが頻繁に変更されない場合は、クロールスケジュールを1日1回に減らすことでリクエスト量を減らし、安定性を向上させることができます。コンテンツが頻繁に変更されないサイトには、日次スケジューリング付きのサイトマップインデックスベースのクローラーが適しています。
クロールを安定かつ効率的に保つために:
- クリーンで有効なサイトマップを維持しましょう。
- 同時にクロールリクエストを送りすぎるのは避けましょう。
- 通常のサイト応答時間を反映したタイムアウトを設定しましょう。
- 安定した許可リストルールを維持し、一時的なブロックを回避し、CDN、WAF、ファイアウォールの設定がクロール間で変更されないようにすることで、クローラーへのアクセスを一貫させましょう。
トラブルシューティングチェックリスト
失敗したクロールのトラブルシューティング:
- トリガータイムアウトを10〜60秒に延長してください。
- ユーザーエージェントとIPの許可リストを確認してください。
- CDNやWAFのログでブロッキングやレート制限を確認しましょう。
- 必要でない限りRender JavaScriptを無効にしてください。
- 生およびレンダリングされたHTMLに対して抽出セレクターを検証します。
- サイトマップから失敗したURLを削除してください。
- クロールを再実行し、クロール+インデックス> 0を確認してください。