akismetでスパム対策が簡単かつ強力

8月 28th, 2008 admin Posted in PHP | コメントは受け付けていません。

当ブログはwordpressを利用しており、スパム対策にakismetというのを使用しています。
これがなかなか強力で今までで1000以上のスパムを間違いなしで弾いてくれています。

今回べつのサイトの掲示板にて、botによる荒らしがひどかったためスパム対策をしようとしたところ
akismetがwordpress以外にも簡単に利用できることがわかったため導入してみました。

準備

http://akismet.com/

ダウンロードしたらユーザ登録をしてAPIキーを入手

APIキーを入手するにはwordpress.comのアカウントを作成する必要があります。

サインアップページ

http://wordpress.com/signup/

アカウントを作るとブログがもらえますが今回は必要ないので「Just a username, please.」にチェックを入れるようにします。
アクティベーション用のメールがきますので、本文に記述されているURLをクリックして登録を完了させます。
すると再度メールがきてAPIキーが手に入ります。

次にPHP用のクラスライブラリを手に入れます。

http://akismet.com/development/

ここにはRoR用やJava用や、各種ブログ用などすぐに使えるライブラリがたくさん用意されています。

今回はPHP5なので「PHP 5 class by Alex」を落とします。
あとは書き込みの直前などで以下のコードを実行

コード

PHP:
  1. include("Akismet.class.php");
  2. $akismet = new Akismet("http://"."サイトURL","自分のAPIキー");
  3. $akismet->setCommentAuthor($data['name']);
  4. $akismet->setCommentAuthorEmail($data['email']);
  5. $akismet->setCommentAuthorURL($data['url']);
  6. $akismet->setCommentContent($data['body']);
  7. if($akismet->isCommentSpam()){
  8.     exit("大変申し訳ありませんが、システムの都合で書き込みができませんでした。");
  9. }

これで完了。
Author,AuthorEmail,AuthorURLは空文字でもいいみたいです。

まとめ

CAPTCHAなどの導入も考えましたがユーザの負担がないのが一番ですからね。
あとは誤認識があっても大丈夫なようにエラーメッセージをキャッチする仕組みを用意すれば万全です。
ブログでの実績からすれば全然大丈夫だと思いますが、これでしばらく様子を見てみます。

Comments are closed.