昨日から Akismet を無効にして livedoor の スパムちゃんぷるー をのRBLを導入していますが、それをすりぬけてくるスパムもあります。DNSBLの性質上、統計をとってからデータベースに載せるので、新手のスパム元には対応しきれない面もあります。
で、いろいろ情報をさぐっているうちに「GoogleでIPアドレスを検索して検索にマッチしたらほとんどスパム」という判定方法を見つけ、早速実装してみました。
<?php /* Plugin Name: Google based spam filter Plugin URI: Description: 送信元のIPを Google 検索し、マッチしたらスパムとみなします。要PHP5。 Author: sino Version: 0.0.1 Author URI: http://www.takanashi-it-factory.com/ */ function reject_google_spam_IP($id) { $check_IP = $_SERVER['REMOTE_ADDR']; $spam = false; $json = file_get_contents("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=". $check_IP); $val = json_decode($json); if($val->responseData->results) $spam = true; if ($spam) { wp_die('Error: Your IP Address is found at google (http://www.google.com/search?q='. $check_IP .').'); } } add_action('edit_post', 'reject_google_spam_IP'); ?>
当初、これを元にした RBL を立ち上げようかとも思ったのですが、Webサービス使ってるんならプラグインにした方がいいと思い、こうしました。スパムちゃんぷるーフィルタと併用すればほとんどスパムフリーじゃないでしょうか。もうしばらく様子を見てみたいと思います。