「スパムちゃんぷるーDNSBL」をPHPから利用するServices_SpamChampuru_DNSBL
こんにちは、いつもブログネタなしで泣いてる亀本です。
昨日、livedoorが各所で利用しているというスパムフィルタ「スパムちゃんぷるー」のDNSBL(ブラックリスト)を利用できるサービス「スパムちゃんぷるーDNSBL」が公開されました。
今回は、これをPHPから利用するクラスを作成してみました。
作成といっても、CPANにあるWebService::Livedoor::SpamChampuru::DNSBLのPHP移植です。
またか!と思ったあなたは、僕の記事を見すぎです。
またCodeReposに入れるかなー、と思っていましたが、細かすぎてそこまでのものでもない気がしたので、とりあえず以下に貼り付けておきます。
もうちょっと改変したり、スパムちゃんぷるー関連のその他API等が増えてきたら、そのうちまとめて入れようと思います。
利用に関してですが、このクラスは外部ライブラリとしてPEARのNet_DNSを利用、さらにそのNet_DNSがPHPのmhashモジュールを利用しています。
そのため、このクラスを使用する際には、まずPHPを再コンパイルするなどしてmhashモジュールを有効にした後、
としてNet_DNSをインストールして置く必要があります。。
実際に動かしてみればわかりますが、最後に記述したサンプルの通りlookupを実行すると、指定したIPがブラックリストに登録されていればint(1)、そうでなければint(0)が返ってきます。
# なお、スパムちゃんぷるーDNSBLのページにも記述がありますが、192.0.2.1はテスト用のIPで、必ずSPAM判定が戻ってきます。
ちょっとしたライブラリですが、お役にたてば幸いです。
追記:
id:MugeSoさんにNet_DNSBLというのがあることを教えてもらいました。
もっと汎用的にやりたいというひとは、こちらがいいかもしれません><
昨日、livedoorが各所で利用しているというスパムフィルタ「スパムちゃんぷるー」のDNSBL(ブラックリスト)を利用できるサービス「スパムちゃんぷるーDNSBL」が公開されました。
今回は、これをPHPから利用するクラスを作成してみました。
作成といっても、CPANにあるWebService::Livedoor::SpamChampuru::DNSBLのPHP移植です。
またか!と思ったあなたは、僕の記事を見すぎです。
またCodeReposに入れるかなー、と思っていましたが、細かすぎてそこまでのものでもない気がしたので、とりあえず以下に貼り付けておきます。
もうちょっと改変したり、スパムちゃんぷるー関連のその他API等が増えてきたら、そのうちまとめて入れようと思います。
利用に関してですが、このクラスは外部ライブラリとしてPEARのNet_DNSを利用、さらにそのNet_DNSがPHPのmhashモジュールを利用しています。
そのため、このクラスを使用する際には、まずPHPを再コンパイルするなどしてmhashモジュールを有効にした後、
- %
sudo pear install Net_DNS
としてNet_DNSをインストールして置く必要があります。。
- require_once
'Net/DNS.php'; - /**
* Services_SpamChampuru_DNSBL * * @author Daichi Kamemoto(a.k.a yudoufu) <daichi@asial.co.jp> * @version 0.0.1 */ - class
Services_SpamChampuru_DNSBL - {
private static $domain = 'dnsbl.spam-champuru.livedoor.com'; private static $spam_result = '127.0.0.2'; private $timeout = 0.1; private $nameservers = array(); /** * constructor * * @param integer $timeout * @param array $nameservers */ public function __construct($timeout = null, $nameservers = null) { if (!is_null($timeout)) { $this->timeout = $timeout; } if (!is_null($nameservers)) { if (!is_array($nameservers)) { $nameservers = array($nameservers); } $this->nameservers = $nameservers; } } /** * lookup * * @param string $ip_addr * @return integer $score SPAM is 1, HAM is 0 */ public function lookup($ip_addr) { $score = 0; $reverse_ip_addr = implode('.', array_reverse(explode('.', $ip_addr))); $dnsbl_request = $reverse_ip_addr . '.' . self::$domain; if (self::$spam_result === $this->_dns_lookup($dnsbl_request)) { $score = 1; } return $score; } /** * _dns_lookup * * @param string $dnsbl_request * @return string $result */ private function _dns_lookup($dnsbl_request = null) { $result = null; $resolver = new Net_DNS_Resolver(array( 'nameservers' => $this->nameservers, 'tcp_timeout' => $this->timeout, )); if ($response = $resolver->query($dnsbl_request)) { foreach ($response->answer as $rr) { if ($rr->type === 'A') { $result = $rr->address; break; } } } return $result; } - }
- if
(count(debug_backtrace())) return; - //
Sample Code - $dnsbl
= new Services_SpamChampuru_DNSBL(); - $res
= $dnsbl->lookup('192.0.2.1'); - var_dump($res);
実際に動かしてみればわかりますが、最後に記述したサンプルの通りlookupを実行すると、指定したIPがブラックリストに登録されていればint(1)、そうでなければint(0)が返ってきます。
# なお、スパムちゃんぷるーDNSBLのページにも記述がありますが、192.0.2.1はテスト用のIPで、必ずSPAM判定が戻ってきます。
ちょっとしたライブラリですが、お役にたてば幸いです。
追記:
id:MugeSoさんにNet_DNSBLというのがあることを教えてもらいました。
もっと汎用的にやりたいというひとは、こちらがいいかもしれません><
コメント
コメントフォーム
トラックバックURI
最近の記事
システム開発エンジニア募集! [2012年02月03日 : 小林有佳]
OpenVPNで細々便利な設定 [2012年01月31日 : 門脇優児]
【iOS】Viewの開発・デバッグに役立つ色々 [2012年01月23日 : 中川善樹]
PHPDocumentorの利用方法まとめ [2012年01月19日 : 笹亀弘]
Google Chart Toolsを使ってサイトマップを描こう! [2011年12月21日 : 志田仁美]
stumpwm設定v2 [2011年12月19日 : 門脇優児]
Mashup Awards 7の授賞式が行われました [2011年12月16日 : 中川善樹]
社員旅行に行きました [2011年12月12日 : 大橋寛子]
iCloud風のアイコンを作成する(Fireworks) [2011年12月07日 : 和田記光]
iScroll4でネイティブに近いスマホ向けHTMLページを作成する [2011年12月02日 : 松田惇]













にもPHP版があるみたいで、スパムちゃんぷるーのページから紹介されてますね。
ありがとうございますー。存じ上げております。
なんか他にも何人か作ってらっしゃるみたいですね。
まぁ、本文でも言っちゃってますが、正直共有する価値ないかもなーぐらいのプチクラスなので。。。リリースに気付いてから脊髄反射で書いて、せっかくなのでブログにのっけた、という感じです(^^;
たぶん、Net_DNSBLを使ってあげるのが一番今後のためにいいような気がしますw
弊社でも「スパムちゃんぷるー」同様のDNSBLサービス「スパム鯛めし」を立ち上げました。
http://wiki.takanashi-it-factory.com/index.php?%A5%B9%A5%D1%A5%E0%C2%E4%A4%E1%A4%B7
ユニークIPベースで92.8%、延べIPでは99.4%の高確率でスパムを検出できています。よろしければお試しいただき、使ってみてください。