
みなさんこんにちは、ガノー(Ganohr)です。
以下の内容が非常に反響を得ています。

今回はそれに関連した内容です。
不正なボットアクセスや著作権侵害を目的とした種々の不正アクセスに対し、ウェブサイトはアクセス制限を行います。
特に個人のウェブサイトやブログ、一部の企業が運営するものであっても、’User Agent‘(ユーザ・エージェント、通常UAと略す)を用いてアクセス制限を行っている場合が多い実情があります。
この方法は簡便であり、不正の判定にサーバースペックを消費しないという利点があります。
当サイトも基本的には「特定の検索エンジンのクローラーやSNSのクローラー」に対して、
UAを元に、アクセス制限を制御していました。
その上で、UAを偽ってアクセスしてきたホストをIPアドレス単位で規制する対策を行ってきました。
しかし、最近当サイトのアクセス数が増大し、そのような対応を取ることが難しくなりました。
そこで今回、
UAをGooglebotと詐称してアクセスしてきたホストに対し、GooglebotのIPアドレスか否か自動で高速に検証し、それとは異なる場合アクセスを遮断する方法を紹介します。
この方法には、以下に示す3つの利点があります。
- 導入が簡単でありながら、不正アクセスへの対策としてはかなり強固なものになる
- IPアドレスレンジを調査した結果を元にアクセス制限を行っているためその精度が高い
- ドメイン解決を必要としないため高速に処理できる
更新履歴
2023/02/07 新たに発見したUAを1件追加。
Google-Display-Ads-Bot
2022/11/26 新たに発見したUAを1件追記。
Google-adstxt
2021/10/19 新たに判明したUAを3件追記。ブロック定義をコピペ可能に。
2020/03/17 UAを追記
2019/12/26 UAを追記Mozilla/5.0 (compatible; Google-Site-Verification/1.0)
2019/02/21 UA/IP一覧を見やすく改修
2019/02/20 タイトル他修正
2019/02/18 コラムに情報を追記、一部で本文を修正
2019/02/16 公開
Googlebotが使用するUAの一覧

一口に『Googlebot』と言っても、様々な種類があります。
それぞれの種類ごとにUAが異なるため、アクセス制限を課す場合は考慮が必要です。
PC用のGooglebot
- Mozilla/5.0 (compatible; Googlebot/2.1; +https://www.google.com/bot.html)
モバイル用のGooglebot
- Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +https://www.google.com/bot.html)
- Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +https://www.google.com/bot.html) Safari/537.36
Google画像検索用のGooglebot
- Googlebot-Image/1.0
Google AdSense用のGooglebot
- Mediapartners-Google
- AdsBot-Google (+https://www.google.com/adsbot.html)
- 2023/02/07 追加Google-Display-Ads-Bot
Google AdSense用のGooglebot
- Mediapartners-Google
- AdsBot-Google (+https://www.google.com/adsbot.html)
(2019/12/27 追加)
GoogleのURL検証用UA
- Mozilla/5.0 (compatible; Google-Site-Verification/1.0)
(2019/12/27 追加以上)
(2020/03/17 追加)
Android用のファビコン取得用UA
- Mozilla/5.0 (Linux; Android 8.0.0; SH-04H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36,gzip(gfe),gzip(gfe) (via Google-Chrome-WebAPK)
- Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 Google (+https://developers.google.com/+/web/snippet/)
- Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 Google-PageRenderer Google (+https://developers.google.com/+/web/snippet/)
- Google-adstxt
- ※ sellers.json取得・検証用
- ※ IPはGooglebot
- Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)
(2020/03/17 追加以上)
(2021/10/19 追加)
Android用のSMS共有時クローラ
(2022/11/26 追加)
Google AdSense用のGooglebot
Gメール共有時のクローラ
(2021/10/19 追加以上)
※ IPはGooglebot
UAは簡単に詐称できる

UAは『Google Chrome』や『EDGE』、『Internet Explorer』などの、モダンなブラウザを用いれば、デフォルトの機能だけで簡単に偽装ができてしまいます。
その偽装方法はあえて説明しませんが、少しインターネットの知識があれば誰でも簡単にできるのが現状です。
特に、Google Chromeを使っていれば簡単に『Googlebot』であると詐称してアクセスすることが可能です。
これによりUAを元に『Googlebot』か否かを判定しアクセス制限を行ってきたサイトでも、そのアクセス制限を簡単に迂回できるわけです。
したがって、UAを元にしたアクセス制限はあまり意味を持ちません。そこで、UAが『Googlebot』だとしてアクセスしてきたIPに対して、自動的にIPアドレスのチェックを義務付けることで、より強固なアクセス制限を実施しましょう。
アクセスしてきたホストのIPアドレスが、正しく『Googlebot』のIPアドレスかを検証するには、どうすればよいでしょうか。
それには、アクセスしてきたIPアドレスに対して‘DNSルックアップ’(DNS Lookup、DNS Resolver Lookup、DNS逆引き、名前解決)を用いてそのホストが「googlebot.com」もしくは「google.com」であるかを調べる必要があります。

しかし、DNSルックアップは非常に重い処理であるため、アクセス制限においては用いるべきではありません。
そのため、運用的にはDNSルックアップを用いて『Googlebot』だと信頼するIPアドレスとそのレンジをリストアップしておき、そちらをもとに検証することが合理的です。
ただし、予めIPアドレスをリストアップしておきそれを使うか、DNSルックアップを遅延して実行する必要があります。
なお、IPアドレスを予めリストアップした場合、このリストを定期的に更新する必要があります。
GooglebotのIPアドレス、IPレンジ

『Googlebot』のIPアドレスは、Google自体により正式発表等はされていません。
しかし、できるだけ高速かつ正確にアクセス制限を行うには、IPアドレスやIPレンジでアクセス制限を行う方が都合が良いのも事実です。
そこで以下の手順にて『Googlebot』のIPアドレスを抽出しました。
- 当サイトに2018年8月以降2019年2月16日にアクセスしてきたホスト
- そのうちUAに「Googlebot」か、「Mediapartners-Google」か、「AdsBot-Google」を設定していたもの
- そのIPに対してDNSルックアップを行い、「googlebot.com」もしくは「google.com」であることを確認できたもの
- その上で「Whois検索を行い、割当レンジを抽出する」
GooglebotのIPアドレス
※ 膨大なため折りたたんでいます。
GooglebotのIPアドレスと使用されたUAの一覧
66.249.69.78 66.249.69.80 66.249.69.82 66.249.69.237 66.249.69.239 66.249.69.241 66.249.71.7 66.249.71.8 66.249.71.9 66.249.71.46 66.249.71.48 66.249.71.50 66.249.71.56 66.249.71.58 66.249.71.78 66.249.71.80 66.249.71.82 66.249.71.102 66.249.71.104 66.249.71.106 66.249.71.140 66.249.71.142 66.249.71.144 66.249.73.142 66.249.79.14 66.249.79.16 66.249.79.18 66.249.79.53 66.249.79.56 66.249.79.59 66.249.79.78 66.249.79.80 66.249.79.82 66.249.79.110 66.249.79.112 66.249.79.114 66.249.79.176 66.249.79.206 66.249.79.208 66.249.79.210 66.249.79.214 66.249.79.216 66.249.79.218 66.249.79.241
212.129.2.3※ ※ なりすまし。このようなアクセスは一部であり、本定義で自動拒否できるGooglebot46.229.161.131※ ※ このUAはすべてなりすまし。このようなアクセスは一部であり、本定義で自動拒否できるMozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +https://www.google.com/bot.html)66.249.66.3 66.249.66.7 66.249.69.78 66.249.69.80 66.249.69.82 66.249.69.144 66.249.69.237 66.249.69.239 66.249.69.241 66.249.71.7 66.249.71.8 66.249.71.9 66.249.71.14 66.249.71.46 66.249.71.48 66.249.71.50 66.249.71.54 66.249.71.56 66.249.71.58 66.249.71.60 66.249.71.78 66.249.71.80 66.249.71.82 66.249.71.102 66.249.71.104 66.249.71.106 66.249.71.130 66.249.71.140 66.249.71.142 66.249.71.144 66.249.73.146 66.249.79.14 66.249.79.16 66.249.79.18 66.249.79.53 66.249.79.56 66.249.79.59 66.249.79.78 66.249.79.80 66.249.79.82 66.249.79.110 66.249.79.112 66.249.79.114 66.249.79.174 66.249.79.176 66.249.79.178 66.249.79.206 66.249.79.208 66.249.79.210 66.249.79.214 66.249.79.216 66.249.79.218 66.249.79.220 66.249.79.237 66.249.79.239 66.249.79.241
74.208.147.23※※ 自称SEOツール。UAを偽装している以上、不正アクセス以外のなんでもない。
157.7.106.167※※ なりすまし。このようなアクセスは一部であり、本定義で自動拒否できる
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +https://www.google.com/bot.html) Safari/537.36
66.249.69.78 66.249.69.80 66.249.69.82 66.249.71.7 66.249.71.8 66.249.71.9 66.249.71.46 66.249.71.48 66.249.71.50 66.249.71.102 66.249.71.140 66.249.71.144 66.249.79.14 66.249.79.56 66.249.79.59 66.249.79.78 66.249.79.80 66.249.79.82 66.249.79.206 66.249.79.208 66.249.79.210
Mediapartners-Google
66.249.69.80 66.249.69.237 66.249.69.241 66.249.71.7 66.249.71.8 66.249.71.9 66.249.71.46 66.249.71.48 66.249.71.50 66.249.71.80 66.249.71.104 66.249.71.140 66.249.71.142 66.249.79.14 66.249.79.53 66.249.79.56 66.249.79.59 66.249.79.78 66.249.79.80 66.249.79.82 66.249.79.110 66.249.79.114 66.249.79.206 66.249.79.208 66.249.79.210 66.249.87.110 66.249.87.112 66.249.87.114 66.249.91.46 66.249.91.48 66.249.91.50 66.249.92.3 66.249.92.5 66.249.92.7 72.14.199.14 72.14.199.16 72.14.199.18 72.14.199.46 72.14.199.110 72.14.199.112 72.14.199.114 72.14.199.142 72.14.199.144 72.14.199.146 72.14.199.180 72.14.199.183 72.14.199.186 72.14.199.206 72.14.199.208 72.14.199.210 72.14.199.214 72.14.199.216 72.14.199.218 72.14.199.220 72.14.199.237 72.14.199.239 72.14.199.241
Googlebot-Image/1.0
66.249.71.7 66.249.71.8 66.249.71.9 66.249.71.46 66.249.79.206 66.249.79.208 66.249.79.210
AdsBot-Google (+https://www.google.com/adsbot.html)
72.14.199.208 72.14.199.210
Mozilla/5.0
72.14.199.210※※ Mediapartners-Googleの一部がアクセス規制を回避するために偽装するUA。基本は遮断する。
(2019/12/27 追記)
Mozilla/5.0 (compatible; Google-Site-Verification/1.0)
72.14.199.163※※ このUAは基本的には後述のIPレンジであればいつでも使用されることがある。それ以外のIPは不正アクセス。
GooglebotのIPレンジ
66.249.64.0/19
72.14.192.0/18
(2023/04/13追記)Google公式のIPアドレス一覧は以下のリソースにて公開されています。
(追記以上)
Googlebotを.htaccessで拒否するための定義

それでは『Googlebot』のIPアドレス、IPレンジが判明しましたので、実際に.htaccessで拒否するための定義を記述しましょう。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} AdsBot-Google [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Googlebot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Google-Site-Verification [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Google-Chrome-WebAPK [NC,OR]
RewriteCond %{HTTP_USER_AGENT} developers\.google\.com/\+/web/snippet/ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Google-PageRenderer [NC,OR]
RewriteCond %{HTTP_USER_AGENT} GoogleImageProxy [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Mediapartners-Google [NC]
# Google
# 66.249.64.0/19
# 66.249.64.0 - 66.249.95.255
RewriteCond %{REMOTE_ADDR} !^66\.249\.(6[4-9]|[7-8][0-9]|9[0-5])
# Google
# 72.14.192.0/18
# 72.14.192.0 - 72.14.255.255
RewriteCond %{REMOTE_ADDR} !^72\.14\.(19[2-9]|2[0-9]+)
# Rewrite実行
RewriteRule ^(.*)$ - [F,L]
</IfModule>
記述位置はどこでも構いませんが、.htaccessの下方に配置するほうが安全でしょう。
なお、この定義を使用する際は自己責任でお願いします。実際にUAを偽装してアクセスし、403 Forbiddenが発生することを確認する

手順は解説しませんが、UAをGooglebotに偽装してアクセスしてください。
UAのカスタマイズで以下3種類を設定し、全てが問題なくブロックされることを確認しましょう。
- Googlebot
- Mediapartners-Google
- AdsBot-Google
また、『Google Search Console』の『Fetch as google』や、『モバイルフレンドリーテスト』などを利用して、Googlebotに自サイトを巡回させて、問題がないことを確認しましょう。
まあ、Googlebotは巡回が頻繁(それでもBingよりはおとなしいが)なので、1時間程度待てば自動的に巡回されていることでしょう。
もしもこの.htaccessを設定後に
Googlebotからのアクセスが激減していたり、アクセスがない場合は、サーバーログ(エラーログ)を確認し、Googlebotがブロックされていないか確認してください。
最後に

当サイトはオリジナルの情報を発信しています。
しかし、最近アクセス数が増加するに連れて、不正アクセスがうなぎのぼりに増えています。
著作権保護のためにも、これらの不正アクセスからスマートにコンテンツを保護する必要があります。
現状一般的に行われているUAによるアクセス制限は、簡単に突破できてしまうという欠点があります。
インターネット上に公開してしまうと、どのようなアクセス制限を行っても限界があります。
完璧なアクセス制限は存在し得ません。
しかし今回紹介した方法であれば、
- 導入が簡単でありながら、不正アクセスへの対策としてはかなり強固なものになる
- IPアドレスレンジを調査した結果を元にアクセス制限を行っているためその精度が高い
- ドメイン解決を必要としないため高速に処理できる
といった利点が得られるのです。
今回解説した内容が、皆さんの役に立つことを願って、この記事を終えます。
以上、ガノー(Ganohr)でした。
関連記事


コメントを書く