Googlebotを名乗るアクセスは逆引きと正引きの両方で確認する
公開日: 執筆:佐藤
アクセスログのUser-AgentにGooglebotと書かれていても、それだけではGoogleのcrawlerだと確認できません。接続元IP addressを逆引きし、得られたhost名がgooglebot.com domainに属することを確かめます。続いて、そのhost名を正引きし、元のIP addressへ戻ることまで確認してください。
逆引きだけで止めると、第三者が自分のIP addressへGooglebotらしいhost名を設定した場合を除けません。User-Agent、逆引き、正引きを別の証拠として扱います。
User-Agentは名札であり接続元の証明ではない
HTTP requestのUser-Agentは、接続する側が送る文字列です。crawlerの名前、browser名、versionなどが含まれますが、serverは文字列だけから送信者を証明できません。
GoogleによるGooglebotの確認方法も、任意のbotがGooglebotを名乗れるため、DNSを使って接続ごとに確認する方法を示しています。
確認の出発点は、解析画面に集計された訪問名ではなく、web serverのaccess logです。少なくとも、request日時、接続元IP address、request URL、HTTP status、User-Agentを同じ行で残します。
最初にIP addressを逆引きする
access logから接続元IP addressを一つ取り出し、reverse DNS lookupを行います。利用できるcommandはserver環境によって異なりますが、確認の形は次のとおりです。
host <access logに記録されたIP address>
返されたhost名が、googlebot.com domainの配下かを確認します。文字列の途中にgooglebot.comがあるだけでは足りません。末尾のdomain境界まで見て、別のdomainに作られた似た名前を除きます。
逆引きでhost名を得られない場合や、Googlebotと関係しないdomainが返る場合は、この確認方法ではGooglebotとして認証できません。User-Agentの表記を優先して通さないでください。
次にhost名を正引きして元のIP addressへ戻す
逆引きで得たhost名を、そのままforward DNS lookupへ渡します。
host <reverse DNSで得たhost名>
正引きの結果に、access logへ記録された元のIP addressが含まれることを確認します。ここで別のIP addressだけが返るなら、逆引き結果だけを根拠にGooglebotとは判定しません。
| 逆引き | 正引き | 判定 |
|---|---|---|
googlebot.com以外 |
未実施 | Googlebotとして未確認 |
googlebot.com配下 |
元のIP addressへ戻らない | Googlebotとして未確認 |
googlebot.com配下 |
元のIP addressへ戻る | DNSによる確認条件を満たす |
DNSの応答とaccess logは、確認日時と一緒に保存します。後から担当者が変わっても、どのrequestを何で判断したかを再現できます。
IP addressの固定一覧を運用の正本にしない
Googleの説明は、crawlerのIP rangeが変わる可能性を理由に、固定したIP一覧ではなく接続ごとのDNS確認を勧めています。一度確認したIP addressを恒久的なallow listとして扱わず、新しい接続元は同じ手順で確かめます。
DNSでGooglebotだと確認できたことと、そのrequestがsiteへ与えた負荷は別です。負荷を調べる場合は、同じ時間帯のrequest数、取得URL、HTTP status、応答時間を確認します。crawlerの所属を確かめる作業だけで、server負荷の原因や対応方法までは決まりません。
また、確認できない接続をすぐ攻撃と断定することも避けます。User-Agentの偽装、DNS設定の問題、logの欠落などを分け、必要ならhosting会社へ元のlogと確認結果を渡します。
調査を委託しても判定記録を受け取る
DNS lookupやlog調査をhosting会社または制作会社へ委託する場合は、「Googlebotでした」という結論だけでなく、対象日時、元IP address、逆引きhost名、正引き結果を受け取ります。
調査commandを実行する作業と、未確認のbotを許可するか、遮断するか、監視するかを決める責任は別です。site所有者が判断できるよう、server設定を変える前後の記録も残してください。
最初の一手は、Googlebotを名乗るaccess logを一行だけ選び、元の記録を保存したまま逆引きと正引きを実行することです。二つの結果が対応してから、同じ接続元のrequest数と取得URLを調べます。
関連記事

