baiduspider対策

中国の検索サイト「百度(Baidu)」から無茶な間隔のアクセスがあるため、対策を講じました。

この百度のクローラーであるbaiduspider、短いアクセス間隔で物凄い数のアクセスを行うことで悪名高いようです。実際、別サイトではえらい数のアクセスがありました。

で、以下が実際のログの一部(2行1組)。以前はこれが秒単位で来ていました。

122.152.140.173 - - [17/Nov/2007:03:30:06 +0900] "GET / HTTP/1.1" 200 10088 "-" "Baiduspider+(+http://www.baidu.com/search/spider_jp.html)"
122.152.140.173 - - [17/Nov/2007:03:34:06 +0900] "GET /index.php?month=2026-07-13 HTTP/1.1" 200 6672 "-" "Baiduspider+(+http://www.baidu.com/search/spider_jp.html)"

問題はURLのところ。「2026-07-13」という有り得ない日付の引数を指定してきています。しかも引数の「month」についても、このサイトでは未使用‥‥絨毯爆撃というか、総当たり戦というか‥‥下手な鉄砲、数撃ちゃあたるというか、あり得る単語の組み合わせを全部試してみるというやり方はいかがなものかと。

そんなわけで、サーバ側とTextpattern側の双方で、baiduspider対策をやっておきました。

robots.txtの編集

まず、robots.txtを作成してサイト直下に設置します。このあたりの設定方法は仕様として標準化されているので、不明な点は検索して調べます。

User-agent: baiduspider
Disallow: /textpattern/
Disallow: /images/
Disallow: /files/
Crawl-delay:60

このサイトでは、百度蜘蛛に対して、textpatternとimagesとfilesには調べないでくださいよ、最短の巡回間隔は60秒にしてくださいよ、と書いてあります。

Textpatternの設定変更

デフォルトではTextpatternの設定として「ログの取得」は「全てのアクセス」となっていますが、これを「リファラのみ」に制限します。こうすることで、TextpatternのDBテーブルにbaiduspiderの膨大なアクセスログが登録されるのを防ぎます。

根本対策

おそらく根本的な原因は、私の作ったTextpatternサイトが“404 Error Page”を返さないことにあると思われるので、その動作の原因を直すことも必要です。

しつこくつきまとわれるのは勘弁して貰いたいものですが、自ら餌をまいているのに気が付かないでアクセス禁止にするのも賢明な対応ではないよなぁ、と思っています。