- サイト障害を引き起こすほど大量のリクエストを送るGooglebotの事例の多くは、Googleではなく Googlebotを装った外部ボット によるもの
- HTTP
User-Agentはリクエスト送信者が任意に指定できるため、ログ内のGooglebot/2.1という文字列だけでは 本物のGooglebotである保証にはならない - 偽装ボットはブロックを回避するためにGooglebotの名前を使っており、複数のホスティング事業者のサーバーを動員した 単一の大規模な悪性クローラーキャンペーン である可能性もある
- 本物のGooglebotかどうかは
hostコマンドやGoogleが公開した IPレンジ で検証すべきであり、登録者がGoogle LLCのIPでもGoogle Cloudのアドレスである可能性があるため追加確認が必要 - Googlebotトラフィック全体の過半が偽物だというデータはないが、サービスを妨害するGooglebotトラフィック は主に偽装ボットから発生しているとみられる
Googlebotトラフィックをめぐる誤解
- Google検索クローラーが過剰なトラフィックでサイト障害を引き起こしたり、DDoSのように振る舞ったりするという運営者の不満がある
- しかし、このような破壊的トラフィックはGoogleではなく、別の主体がGooglebotの名前を盗用して送った 偽装リクエスト かもしれない
- サーバーログでGooglebotという文字列を見つけただけで、Googleがトラフィックの発信元だと断定することはできない
User-Agentは身元証明ではない
- Googlebotに見えるリクエストには通常、次のような値が含まれる
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
- nginxのログにも同じ文字列が記録されうるが、User-Agentヘッダー はリクエスト送信者が望む値に自由に設定できる
- User-Agentは検証済みの認証情報ではなく自発的な自己識別にすぎないため、誰でもGooglebotだと名乗れる
偽装ボットの発信元と規模
- 偽装の主体は既存のボットブロックを回避するためにGooglebotのUser-Agentを使っているとみられる
- 例示されたログのIPはGoogleではなく、ホスティング事業者 Virtual Machine Solutions LLC が提供したサーバーだと確認されている
- Googlebotのなりすましは以前からよく使われる手口であり、最近はその規模が大きくなっているように見える
- Chris Siebenmann は、古い手口が各所で同時に流行したというより、複数のホスティング事業者で多数のサーバーを確保した 単一の悪性クローラーによる大規模キャンペーン である可能性を示している
本物のGooglebotを検証する方法
- GoogleのGooglebot検証ドキュメント に従って数回
hostコマンドを実行するか、Googleが公開しているIPレンジと照合できる - 主要なクローラーの多くはIPリストを公開しているが、具体的な形式や運用方法はそれぞれ異なる
- JAFAR はクローラーのIPリストを標準化しようとする提案で、まだ 標準化手続き が進行中である
- IP登録者がGoogle LLCと表示されても、Google Cloudのホスティングアドレスである可能性があるため、別途検証が必要
- Google Cloud経由の最近の偽装事例は確認できていない
- 検証の結果、本物のGooglebotが過剰にクロールしているなら、Googleの過剰クロール対処ドキュメント に従うべきである
信頼できるボット認証
- 単にフィールドを1つ追加しても、悪意ある行為者がその値を正直に設定する理由はない
- RFC 3514 のいわゆる
evil bitは、悪意ある主体がこうした標準に従わないことを風刺している - Web Bot Auth HTTP Signatures は別フィールドより複雑だが、暗号学的署名 によって信頼できるUser-Agentを実現しようとする方式である
「大半」という表現の限界
- Googlebotトラフィック全体のうち、偽物が実際に過半を占めると証明するデータはない
- ただし、サイトを深刻に妨害したGooglebotトラフィック事例の大半は 偽のGooglebot に由来しているようだ
- 本物のGooglebotは経験上非常に安定して動作する一方、偽装ボットはサイトが障害を起こすまでリクエストを送り続けることがある
1件のコメント
Lobste.rs のコメント