更新履歴とコメントはServices_SpamChampuru Archive - ゼロと無限の間のログでどうぞ。
livedoorによるDNS Black List方式によるSPAMフィルターのAPI、スパムちゃんぷるーDNSBL。
これを使うためのPerlモジュールは公開されているのに、PHP版が無い!ので作った。
けどすぐに「スパムちゃんぷるーDNSBL」をPHPから利用するServices_SpamChampuru_DNSBLが公開されていた。が、せっかくだから公開。
最初はPEAR::Net_DNSBLを使おうとしたけど、どうもうまくいかない。ソースを見たらややこしいことをしてそうなので面倒になってやめた。
ここは1つシンプルにしてみよう。名前もServices_SpamSimpleuにしようかと思ったけど分かりづらいのでやめた。
require_once('Services_SpamChampuru.php'); //アクセス元のIPアドレスをチェックする場合はパラメータ無しでOK var_dump(Services_SpamChampuru::isSpam()); //=> false //IPアドレスを指定してチェックする場合 var_dump(Services_SpamChampuru::isSpam('192.168.0.1')); //=> false //常にSPAMと判定される、テスト用のIPアドレス var_dump(Services_SpamChampuru::isSpam('192.0.2.1')); //=> true
例によってMITライセンスで。
シンプルでしょ?
class Services_SpamChampuru { const BASE_DOMAIN = '.dnsbl.spam-champuru.livedoor.com'; //SPAMの場合はDNSからこのIPアドレスが返される const RESULT_SPAM_IP = '127.0.0.2'; /** * スパムかどうか判定する * @param string $ip 判定したいIPアドレス(v4) * @return boolean 判定結果 */ public static function isSpam($ip = null) { if (!$ip) { $ip = $_SERVER['REMOTE_ADDR']; } $name = implode('.', array_reverse(explode('.', $ip))) . self::BASE_DOMAIN; return (getHostByName($name) == self::RESULT_SPAM_IP); } }