【.htaccess】Googlebotか自動判定し、Googlebotになりすました不正アクセスを拒否する方法

【.htaccess】Googlebotか自動判定し、Googlebotになりすました不正アクセスを拒否する方法
【.htaccess】Googlebotか自動判定し、Googlebotになりすました不正アクセスを拒否する方法

 

 
読了目安:358

Are you want to translate this page to English? Please click this link to translate via ‘©Google Translate'!

ganohr.net favicon

みなさんこんにちは、ガノー(Ganohr)です。

以下の内容が非常に反響を得ています。

サムネイルBingbotを拒否すべき3+1の理由と遮断方法!百害あって1利無しあなたは未だにBingの巡回を許可しているのでしょうか。Bingは7ヶ月で34万回クロールをしながらも、実際に集客した人数は500人にも満たないのが現状です。Bingを遮断すべき3つの理由とその遮断方法を解説します。 ... 続きを読むganohr.net2019-02-15

 

今回はそれに関連した内容です。

不正なボットアクセスや著作権侵害を目的とした種々の不正アクセスに対し、ウェブサイトはアクセス制限を行います。

特に個人のウェブサイトやブログ、一部の企業が運営するものであっても、’User Agent‘(ユーザ・エージェント、通常UAと略す)を用いてアクセス制限を行っている場合が多い実情があります。

この方法は簡便であり、不正の判定にサーバースペックを消費しないという利点があります。

当サイトも基本的には「特定の検索エンジンのクローラーやSNSのクローラー」に対して、

UAを元に、アクセス制限を制御していました。

 

その上で、UAを偽ってアクセスしてきたホストをIPアドレス単位で規制する対策を行ってきました。

しかし、最近当サイトのアクセス数が増大し、そのような対応を取ることが難しくなりました。

 

そこで今回、

UAをGooglebotと詐称してアクセスしてきたホストに対し、GooglebotのIPアドレスか否か自動で高速に検証し、それとは異なる場合アクセスを遮断する方法

を紹介します。

この方法には、以下に示す3つの利点があります。

 
ポイント
本対策を行うことで得られる利点

  • 導入が簡単でありながら、不正アクセスへの対策としてはかなり強固なものになる
  • IPアドレスレンジを調査した結果を元にアクセス制限を行っているためその精度が高い
  • ドメイン解決を必要としないため高速に処理できる

 
更新履歴
2023/04/13 Google公式によるGooglebotの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には様々な種類があり、それぞれでUser Agentが決まっている。

 

一口に『Googlebot』と言っても、様々な種類があります。

それぞれの種類ごとにUAが異なるため、アクセス制限を課す場合は考慮が必要です。

 



 
ポイント
Googlebotが使用するUA一覧

PC用のGooglebot

  1. Mozilla/5.0 (compatible; Googlebot/2.1; +https://www.google.com/bot.html)

モバイル用のGooglebot

  1. 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)
  2. Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +https://www.google.com/bot.html) Safari/537.36

Google画像検索用のGooglebot

  1. Googlebot-Image/1.0

Google AdSense用のGooglebot

  1. Mediapartners-Google
  2. AdsBot-Google (+https://www.google.com/adsbot.html)
  3. 2023/02/07 追加Google-Display-Ads-Bot

Google AdSense用のGooglebot

  1. Mediapartners-Google
  2. AdsBot-Google (+https://www.google.com/adsbot.html)

(2019/12/27 追加)
GoogleのURL検証用UA

  1. Mozilla/5.0 (compatible; Google-Site-Verification/1.0)

(2019/12/27 追加以上)

(2020/03/17 追加)
Android用のファビコン取得用UA

  1. 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)
  2. (2020/03/17 追加以上)

    (2021/10/19 追加)
    Android用のSMS共有時クローラ

    1. 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/)
    2. 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/)

    (2022/11/26 追加)
    Google AdSense用のGooglebot

    1. Google-adstxt
      • ※ sellers.json取得・検証用
      • ※ IPはGooglebot

    Gメール共有時のクローラ

    1. Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)

    (2021/10/19 追加以上)

※ IPはGooglebot

UAは簡単に詐称できる

女性がパソコンの前で悩んでいる写真
User Agentは簡単に偽装できる。アクセス制限としては非常に脆い。

 

UAは『Google Chrome』や『EDGE』、『Internet Explorer』などの、モダンなブラウザを用いれば、デフォルトの機能だけで簡単に偽装ができてしまいます。

その偽装方法はあえて説明しませんが、少しインターネットの知識があれば誰でも簡単にできるのが現状です。

特に、Google Chromeを使っていれば簡単に『Googlebot』であると詐称してアクセスすることが可能です。

 

これによりUAを元に『Googlebot』か否かを判定しアクセス制限を行ってきたサイトでも、そのアクセス制限を簡単に迂回できるわけです。

したがって、UAを元にしたアクセス制限はあまり意味を持ちません。

そこで、UAが『Googlebot』だとしてアクセスしてきたIPに対して、自動的にIPアドレスのチェックを義務付けることで、より強固なアクセス制限を実施しましょう。

 
コラム
アクセスしてきたホストがGooglebotか検証する方法

アクセスしてきたホストのIPアドレスが、正しく『Googlebot』のIPアドレスかを検証するには、どうすればよいでしょうか。

それには、アクセスしてきたIPアドレスに対して‘DNSルックアップ’(DNS Lookup、DNS Resolver Lookup、DNS逆引き、名前解決)を用いてそのホストが「googlebot.com」もしくは「google.com」であるかを調べる必要があります。

サムネイルGooglebot(Google クローラー)の確認方法 | Google 検索セントラル  |  ドキュメント  |  Google for Developersサイトにアクセスしたクローラーが本当に Googlebot であるかどうか確認する方法を紹介します。Googlebot の IP アドレス情報も確認できます。 ... 外部サイトへアクセスdevelopers.google.com

 

しかし、DNSルックアップは非常に重い処理であるため、アクセス制限においては用いるべきではありません。

そのため、運用的にはDNSルックアップを用いて『Googlebot』だと信頼するIPアドレスとそのレンジをリストアップしておき、そちらをもとに検証することが合理的です。

ただし、予めIPアドレスをリストアップしておきそれを使うか、DNSルックアップを遅延して実行する必要があります。

 

なお、IPアドレスを予めリストアップした場合、このリストを定期的に更新する必要があります。

GooglebotのIPアドレス、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の一覧
Mozilla/5.0 (compatible; Googlebot/2.1; +https://www.google.com/bot.html)

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 ※

※ なりすまし。このようなアクセスは一部であり、本定義で自動拒否できる

 
Googlebot 46.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アドレス一覧は以下のリソースにて公開されています。

サムネイルhttps://developers.google.com/search/apis/ipranges/googlebot.json ... 外部サイトへアクセスdevelopers.google.com

(追記以上)

Googlebotを.htaccessで拒否するための定義

女性が壁に備え付けられた長椅子に座って俯いている、モノクロの写真
実際にGooglebotを詐称したアクセスをブロックする定義を書こう。難しいことはなにもない。

 

それでは『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が発生することを確認する

上にメガネが置かれているMacbookのキーボードを捉えた写真。
実際に適用したあとは、Googlebotのアクセスが阻害されていないことを確認しよう。

 

手順は解説しませんが、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)でした。

関連記事

サムネイルGoogle CloudのIP範囲とブロック用定義最近当サイトのコンテンツを不正に盗用しスプログを展開しているサイトがGoogleCloudを用いてクローリングしている可能性が浮上したためこととしました.その方法を公開し留意点を解説します.GoogleCloudとは?その名の通りGoogleが手掛けるクラウドサービスです.Googleの強力なバックボーンを利用できるため人気があります.詳細は以下より確認してください.GoogleCloudのIPレンジGoogleクラウドのIPレンジは以下の用にjson形式で動的に取得できます ... 続きを読むganohr.net2021-11-05 サムネイルBingbotを拒否すべき3+1の理由と遮断方法!百害あって1利無しあなたは未だにBingの巡回を許可しているのでしょうか。Bingは7ヶ月で34万回クロールをしながらも、実際に集客した人数は500人にも満たないのが現状です。Bingを遮断すべき3つの理由とその遮断方法を解説します。 ... 続きを読むganohr.net2019-02-15

WordPressの不具合対応/カスタマイズ¥15,000~

PC歴25年超、SE歴10年超、WordPress運営歴7年超、WordPressエンジニア歴5年超のスキルとノウハウを提供します

当サイト管理人の「ガノー」(Ganohr)は、日本最大手且つ東証一部上場企業が運営するクラウドソーシングサイト『Lancers』にて、認定ランサーとして活動しています。


※ 認定ランサーとはLancersにより様々な能力 ( 高い仕事遂行率・高い顧客満足度・多くの実績、など ) を評価したプロフェッショナルを認定する制度です。

 

.htaccessカテゴリの最新記事