[wordpress] Akismetを暇にする現状で最強のスパム対策

WordPressのオーナーにとってコメントスパム/スパムトラックバックは悩みの種だと思います。

Akismetはコメントスパム/スパムトラバを検知してくれる優秀なプラグインなのですが、コメント/トラバを受けて発信元(IPなど)、内容等を精査する仕組みのため、どうしてもデータベースへのアクセスが発生してしまいます。ひとつひとつの負荷は微々たるものでも塵も積もれば何とやら。スパムによる負荷なんてないに越したことはありません。

2つのプラグインを導入する

肝となるのはakaさんに教えてもらった2つのプラグイン。

1つ目はWP-SpamFree。現在WordPressを対象にスパムを撒き散らすスパマーの多くがボットを利用してスパムを自動化しており、ボットの多くはJavaScriptとCookiesの両方には対応していないそうです。WP-SpamFreeはJavaScriptとCookiesが無効になっているとコメント不能にすることでボットからのスパムコメントを防御します。

ところが現在日本のケータイの多くはJavaScriptやCookiesを解釈することができないため、このままではケータイからコメントできなくなってしまいます(ここではiモードブラウザやOpenWaveブラウザのことを指しています。フルブラウザはJSもCookiesも解釈できることが多いようです)。対処策としては、ケータイからのアクセスの場合WP-SpamFreeを動作しないようにしてやればOKです。

僕はケータイからのアクセスをKtai Styleで表示させるようにしているので、WP-SpamFreeの28行目(先頭)にif(is_ktai()) return;と挿入してやりましたhiromasaさん、Thanx!)(Ktai Style Ver.1.10よりWP-SpamFreeのコード修正不要になりました。yurikoさん、Thanx!)

2つ目のプラグインはSimple Trackback Validation Plugin。ほかのサイトから飛んできたトラックバックをどのような基準で審査し、基準からすると不正なものをどう処理するか設定できるようになります。

simple trackback validation plugin setting

上のスクリーンショットはデフォルトの状態で、僕は不正なトラバ処理を「Mark as spam」にし(不正なものはakismetにたまるようになります)、「Add prefix [Blocked by STBV]」のチェックを外しました(このチェックが入っているといちいと投稿者名に[Blocked(ry」が入ってしまうので、問題ないトラバだった場合に消すのが面倒だからです)。きちんとそのページへの言及リンクが入っていなければ認めない場合は「Strictness」で、WPへのURLが入っていればいいかなという場合は「Any link beginning with the following URLs is allowed: 」を選ぶとよいと思います。ぼくは後者で様子見中。

驚くほどの効果

この対策をしてから約1ヶ月。この間にAkismetがつかまえたスパム、Akismetをすり抜けたスパムともにゼロとなりました。驚くべき効果です(…と書いていたら正常動作でmasayanさんからのトラバをSimple Trackback Validationが弾いてたみたいです。masayanさん、ごめんなさい…。ページへのリンクがないと弾いちゃうの(´・ω・`))

Akismetが空の画面というのもなかなか清々しいですね。ぜひお試しあれ。

暇そうなakismet