スパムちゃんぷるー DNSBL を WordPress で利用

livedoor が提供する「スパムちゃんぷるー」のデータに基づく DNSBL を利用して、コメント投稿者の IP アドレスをチェックする WordPress 用プラグインを作成しました。
と言っても、中身は単純。スパムちゃんぷるーDNSBLに対して、DNS問い合わせしてるだけです。
で、SPAM と判定されたら問答無用で拒否します。

以下にソースを掲載しますので、利用なさりたい方はご自由に。
適当なファイル名を付けて /wp-content/plugins/ に保存して有効化すれば、使えるようになるはずです。
なお、ライセンスは明記していませんが GPL とさせてください。

<?php
/*
Plugin Name: SPAM Champuru for WordPress
Plugin URI:
Description: スパムちゃんぷるーのDNSブラックリストに含まれるIPアドレスの場合、拒否します。
Author: wokamoto
Version: 0.3.1
Author URI: https://dogmap.jp/
*/
function reject_spam_IP($ip, $email, $date) {
 $spam_IP  = '127.0.0.2';
 $host     = "dnsbl.spam-champuru.livedoor.com";
 $pattern  = '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/';
 $check_IP = trim(preg_match($pattern, $ip) ? $ip : $_SERVER&#91;'REMOTE_ADDR'&#93;);
 $spam     = false;
 if (preg_match($pattern, $check_IP)) {
  $host = implode('.',array_reverse(split('\.',$check_IP))) . '.' . $host;
  if (function_exists('dns_get_record')) {
   $check_recs = dns_get_record($host, DNS_A);
   if (isset($check_recs&#91;0&#93;&#91;'ip'&#93;)) $spam = ($check_recs&#91;0&#93;&#91;'ip'&#93; === $spam_IP);
   unset($check_recs);
  } elseif (function_exists('gethostbyname')) {
   $checked = (gethostbyname($host) === $spam_IP);
  } elseif (class_exists('Net_DNS_Resolver')) {
   $resolver = new Net_DNS_Resolver();
   $response = $resolver->query($host, 'A');
   if ($response) {
    foreach ($response->answer as $rr) {
     if ($rr->type === 'A') {
      $spam = ($rr->address === $spam_IP);
      break;
     }
    }
   }
   unset($response);
   unset($resolver);
  } elseif (function_exists('checkdnsrr')) {
   $spam = (checkdnsrr($host, "A") === true);
  }
 }
 if ($spam) {
  wp_die('Error: Your IP Address is registered in the DNSBL (http://spam-champuru.livedoor.com/dnsbl/).');
 }
}
add_action('check_comment_flood', 'reject_spam_IP', 10, 3);
?>

また、WordPress Plugins/JSeries でも配布しておりますので、そちらからダウンロードもできます。
配布ページ:
WordPress Plugins/JSeries » SPAM Champuru for WordPress (コメントSPAM判定)

5 thoughts on “スパムちゃんぷるー DNSBL を WordPress で利用

  1. nori

    初めまして。noriと言います。
    WordPress 2.9.2を使っていますが、英語文のみのコメント・スパムが多くて困っています。
    勝手なお願いですが、英語文のみのコメントは自動的にスパム扱いに出来るWordPress用のプラグインを作って公開して頂けないでしょうか。
    ネットを探してみましたが見つかりませんでした。
    PHPは多少知識はありますが、作った事はありません。
    このページの例を見て作ろうと思いましたが、現在は多忙でなかなか時間が取れません。
    毎日20以上の英語文のみの不要なスパムコメントでハタハタ参っています。
    無理なお願いとは思いますが、お時間が出来たらご検討の程、よろしくお願いいたします。m(_._;)m

    返信
    1. をかもと 投稿作成者

      nori さん、はじめまして。

      うちのサイトでは、WordPress に標準でついてきてる Akismet だけでも、十分スパムを弾いてくれてますよ。
      他にもアンチスパムプラグインは、色々あるので試してみてはいかがでしょうか?
      例えば、 SPAM-BYEBYEとか(私は使用したことはありませんが)、Nonce! Pleaseとか。

      返信
  2. ピンバック: 02-WordPress2.9やwp.Vicuna、ニコニコプレスやKtaiStyleとか - WordPress Cafe

  3. ピンバック: Tips Community

  4. ピンバック: 有限会社 高梨IT製作所

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください