Googlebot のアクセスが多すぎて悩ましい時の対処方法

その昔に Amazon の API が公開されたばかりの時に作った

 − Butsuyoku.info :: 最新の口コミ情報を見ながら Amazon でショッピング!

なんですが、作ってすぐに興味もなくなり、口コミ情報といいつつ、API 変更にも対応せず口コミ情報が取得できない状態になっていたり、ボロボロ状態で数年放置状態なわけですが、Googlebot さまは一生懸命にクロールしに来てくれています。

ってかマジヤバイ。コンテンツキャッシュにMySQL を使って作ったんですけど、テーブルサイズがすぐに 4GB になっちゃいます。MySQL側の設定で 4GB 超え対応していないので、いつの間にか FastCGI がエラー吐きまくっていて Lighttpd 全体がフリーズしてしまう。なんてことが度々ありました。

Googlebot のアクセスはこんな感じ。毎秒アクセスしに来る感じです。つまり、86400 req/day です。

66.249.70.81 - - [08/Dec/2008:09:57:55 +0900] "GET /asin/B001HN6FYY HTTP/1.1" 200 15427 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:57:57 +0900] "GET /asin/404867255X HTTP/1.1" 200 15646 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:57:59 +0900] "GET /asin/4253231268 HTTP/1.1" 200 14537 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:00 +0900] "GET /asin/B00030GTQ6 HTTP/1.1" 200 16109 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:02 +0900] "GET /asin/4902800004 HTTP/1.1" 200 13724 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:06 +0900] "GET /asin/B000ASBG3C HTTP/1.1" 200 18134 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:08 +0900] "GET /asin/4844994654 HTTP/1.1" 200 15447 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:09 +0900] "GET /asin/4787815814 HTTP/1.1" 200 12020 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:12 +0900] "GET /asin/4526057975 HTTP/1.1" 200 12329 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:16 +0900] "GET /asin/B00005ABWZ HTTP/1.1" 200 18742 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:17 +0900] "GET /asin/4534036183 HTTP/1.1" 200 14684 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:19 +0900] "GET /asin/1847570070 HTTP/1.1" 200 12717 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:21 +0900] "GET /asin/4088514068 HTTP/1.1" 200 15887 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:23 +0900] "GET /asin/4883863336 HTTP/1.1" 200 15502 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.81 - - [08/Dec/2008:09:58:25 +0900] "GET /asin/B000VOAR08 HTTP/1.1" 200 16425 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
・・・以下続く・・・

普通のブラウザアクセスがこんなにもあれば喜ばしい限りですが、アクセスの99%は Googlebot ですね・・・orz

- スポンサーリンク -

さてさて、このサイトも僕自身すら使っていないのでクローズしようかなとも思ったりですが、このドメイン歴はそれなりにあるので Google のエージングフィルタ上、捨てるのはあまりにもったいない。

とはいえ、無駄にサーバリソースを喰いまくっているので、ひとまず robots.txt でアクセスを減らすように対応しようと試みました。

がっ! Googlebot はクロールの頻度を調節する Crawl-delay パラメータが効果なし。5分間隔でアクセスして欲しいと指定しているのに!

User-agent: Googlebot
Crawl-delay: 300

Googlebot は robots.txt に対応していない話は有名みたいです。ぐぐるといろいろ情報が見つかります。Googlebot のクローラーの頻度設定は、Googleウェブマスターツール(要サイト登録)で設定可能です。詳細は Google のクロール頻度の変更をリクエスト - ウェブマスター向けヘルプ センター をご覧下さい。

Googlebot のサイトに対するクロール頻度を変更する方法は次のとおりです。
  1. Google アカウントを使用して、Google ウェブマスター ツールにログインします。
  2. 該当するサイトの URL をクリックします。
  3. [設定] をクリックします。
  4. 希望するオプションをクリックします。
新たに設定したクロール頻度は 90 日間有効です。

がっ! Butsuyoku.info はサイト登録もしてない状況だし、今すぐクロール頻度を下げたい!そう思ったので思い切って Googlebot のアクセスを拒否するように設定しました。

User-Agent: Googlebot
Disallow: /

じつはこの設定をしても数日間はいつもと同じくクローラーがアクセスしまくってましたが、その後アクセスは日時で robots.txt を参照しに来るだけになりました。

# grep Googlebot *.*
access_log_L.20081212:66.249.72.143 - - [12/Dec/2008:10:17:04 +0900] "GET /robots.txt HTTP/1.1" 200 205 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
access_log_L.20081212:66.249.70.81 - - [12/Dec/2008:20:51:07 +0900] "GET /robots.txt HTTP/1.1" 200 205 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
access_log_L.20081213:66.249.70.81 - - [13/Dec/2008:20:51:17 +0900] "GET /robots.txt HTTP/1.1" 200 205 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

いやぁ〜えがったえがった。もちろん、普通に検索結果上位をねらってアクセス増を目指しているサイトなら、上記までの情報は全く必要ないのですが、bot のアクセスで負荷に悩む場合は参考になるでしょう。


ちなみに、Crawl-delay パラメータはクローラーのアクセスの間隔を秒単位で指定するものです。何故か Yahoo! の Slurp は分単位の指定っぽいですけど・・・まぁそれはそれ。一般的なクローラーのアクセス頻度を5分おきに設定したい場合はこんな感じの robots.txt で良いと思います。

User-agent: Slurp
Crawl-delay: 5

User-agent: msnbot
Crawl-delay: 300

User-agent: baiduspider
Crawl-delay: 300

User-Agent: Teoma
Crawl-delay: 300

User-Agent: Ask Jeeves
Crawl-delay: 300

User-agent: yetibot
Crawl-delay: 300

でもって、お行儀の悪い bot は robots.txt で弾いちゃいます。

User-Agent: Shim-Crawler
Disallow: /

User-Agent: Steeler
Disallow: /

User-Agent: Twiceler
Disallow: /

User-Agent: SafariBookmarkChecker
Disallow: /

User-Agent: BecomeBot
Disallow: /

User-Agent: NaverBot
Disallow: /

もっとも robots.txt すら無視してくる bot も多数あるので、そのような場合は、apache.conf や lighttpd.conf レベルでアクセスを禁止するしかないです。そんな場合には fuki - fuga's Wiki - Apache を参考に、apache.conf を設定するよ良いと思います。

 # Bad agent ※ googleは許可(笑)
 SetEnvIf User-Agent "pompos.html" BadRobot
 SetEnvIf User-Agent "WWWC" BadRobot
 SetEnvIf User-Agent "WebFetch" BadRobot
 SetEnvIf User-Agent "htdig" BadRobot
 SetEnvIf User-Agent "ia_archiver" BadRobot
 SetEnvIf User-Agent "Openfind" BadRobot
 SetEnvIf User-Agent "TurnitinBot" BadRobot
 SetEnvIf User-Agent "dloader" BadRobot
 SetEnvIf User-Agent "FAST-WebCrawler" BadRobot
 SetEnvIf User-Agent "Sidewinder" BadRobot
 SetEnvIf User-Agent "Mercator" BadRobot
 SetEnvIf User-Agent "BaiDuSpider" BadRobot #  040428 typo修正 by doggie
 SetEnvIf User-Agent "WISEnutbot" BadRobot
 SetEnvIf User-Agent "mogimogi" BadRobot
 SetEnvIf User-Agent "Rumours-Agent" BadRobot
 SetEnvIf User-Agent "Openbot" BadRobot
 SetEnvIf User-Agent "Scooter" BadRobot
 SetEnvIf User-Agent "SideWinder" BadRobot
 SetEnvIf User-Agent "CyberSpider" BadRobot
 SetEnvIf User-Agent "Gaisbot" BadRobot
 SetEnvIf User-Agent "InternetLinkAgent" BadRobot
 SetEnvIf User-Agent "slurp@inktomi.com" BadRobot
 SetEnvIf User-Agent "NPBot" BadRobot
 SetEnvIf User-Agent "searchhippo" BadRobot
 SetEnvIf User-Agent "grub-client" BadRobot
 SetEnvIf User-Agent "MSNBOT" BadRobot # ここまでは自前分
 # 追加はここから
 SetEnvIf User-Agent "www.kokotoi.org" BadRobot # Zao/0.2対策 by doggie
 SetEnvIf User-Agent "Tkensaku" BadRobot # by doggie
 SetEnvIf User-Agent "HenryTheMiragoRobot" BadRobot # by たかはしようすけ
 # ここまでの間で
<Files *>
  Order allow,deny
  Allow from all
  Deny from env=BadRobot
</Files>
- スポンサーリンク -