PEAR::Net_DNSBL は、指定したホストあるいは URL が、 DNS ベースのブラックホールリスト (DNSBL、あるいは リアルタイムブラックホールリスト: RBL) あるいは Spam URI リアルタイムブロックリスト (SURBL) にリストされているかどうかを調べます。
現時点では IPv4 のIPアドレスにしか対応していないことに注意してください。
まずは簡単な例からはじめましょう。リモートホストが、 ふたつのブラックリストにリストされているかどうかをチェックします。
<?php
require_once 'Net/DNSBL.php';
$dnsbl = new Net_DNSBL();
$remoteIP = $_SERVER['REMOTE_ADDR'];
$remoteIP = '81.70.69.193';
$dnsbl->setBlacklists(array('sbl-xbl.spamhaus.org', 'bl.spamcop.net'));
if ($dnsbl->isListed($remoteIP)) {
// 何かの処理
}
?>
この例では、URL が SURBL(Spam URI Realtime Blocklists) にリストされているかどうかをチェックします。
<?php
require_once 'Net/DNSBL/SURBL.php';
$surbl = new Net_DNSBL_SURBL();
if ($surbl->isListed($addData['url'])) {
// 何かの処理
}
?>
テキストから URL を抽出する方法は、 http://www.phpfreaks.com/quickcode/Extract_All_URLs_on_a_Page/15.php で見つけられます。それをこのように利用します。
<?php
foreach ($extracted_urls as $surbl_check_url) {
if ($surbl->isListed($surbl_check_url)) {
// 何かの処理
break;
}
}
?>
ホストが一覧に載っていた場合に、詳細な情報を取得してみましょう。
<?php
require_once 'Net/DNSBL.php';
$dnsbl = new Net_DNSBL();
$dnsbl->setBlacklists(array('sbl-xbl.spamhaus.org', 'bl.spamcop.net'));
if ($dnsbl->isListed($_SERVER['REMOTE_ADDR'])) {
var_dump($dnsbl->getDetails($_SERVER['REMOTE_ADDR']));
var_dump($dnsbl->getTxt($_SERVER['REMOTE_ADDR']));
var_dump($dnsbl->getListingBl($_SERVER['REMOTE_ADDR']));
var_dump($dnsbl->getListingRecord($_SERVER['REMOTE_ADDR']);
}
?>