lighttpd でスパムボットを排除する方法

mod_setenvif を使って Apache のログを軽量化」で Apache のログの軽量化の一つとして robot.txt とかを無視してすごい勢いでアクセスしてくるロボットつまりは spambot を排除する方法をお知らせしましたが、「lighttpd + FastCGI は mod_perl + Apache1.3 より1割ほど高速」で書いたように、lighttpd へ移行してからそこら辺の設定がメンドウでサボってました。

昨晩、とあるエラーが大量に出力されていたので気になって調べてみると、Ask.jp のロボットが秒間 5 リクエストくらいの勢いでクロールしに来てました。ちなみに、下記のような UserAgent で到来します。

Mozilla/2.0 (compatible; Ask Jeeves/Teoma;

すでに、UserAgent レベルで、Mozilla って書いてある時点でスパムチックな香りがガンガンするわけで、案の定 robot.txt を無視してアクセスしに来てくれました。ということで、lighttpd に設定を行い、Ask.jp のスパムボットを弾く設定をしました。

- スポンサーリンク -

Apache で記述するところの

BrowserMatchNoCase (Teoma|nabot|dloader|digext|archiver|spider|scooter|zyborg) bad_bot
deny from env=bad_bot

に相当する設定は、lighttpd では次のように記述します。

$HTTP["useragent"] =~ "Teoma|nabot|dloader|digext|openbot|archiver|spider|zyborg" {
url.access-deny = ( "" )
}

この設定で、スパムボットの多くは完全にシャットアウトできると思います。それにしても解せないのは、「Ask.jp へのサイト登録と削除」で robot.txt に設定すれば、ちゃんとクローラーを制御できると書いてあるのですが、全くその通りに動いてくれないという罠。

う〜ん・・・これから盛り上げていこうとする Ask.jp ですが、こんなんではちょっとなぁ・・・と思ってしまいますよね。

- スポンサーリンク -