DNSBL - это технология публичных чёрных списков с использованием DNS. То есть мы можем проверить наличие IP-адреса в чёрном списке простым выполнением одного запроса к DNS. Наибольшую популярность DNSBL завоевали в качестве чёрных списков почтовых серверов, однако сейчас в эти списки вносятся так же анонимные прокси-сервера.
Наличие анонимных прокси-серверов в списках DNSBL может быть интересно веб-мастерам, которые думают над вопросом борьбы со "спамоботами" - ботами, заходящими на форумы и доски объявлений через анонимные прокси и оставляющие там нежелательные сообщения (спам).
Проверка на наличие или отсутствие IP-адреса в чёрном списке очень проста. Далее мы будем приводить примеры опираясть на чёрный список spamcop.net. Для других чёрных скписков иструкции выгядят примерно так же.
Итак. Допустим что нам нужно проверить наличие в чёрном списке адреса 11.33.22.44. Для этого нам надо выполнить запрос к DNS на разрешение имени хоста 44.22.33.11.bl.spamcop.net. Например вот так:
nslookup 44.22.33.11.bl.spamcop.net.
Если получим ответ - значит адрес в чёрном списке. Если же разрешить имя не удалось - значит адрес в чёрном списке отсутствует.
Соответственно если сайт написан на PHP то можно воспользоваться функцией gethostbyname. В случае если удалось разрешить имя - она возвращает IP-адрес. Если же нет - возвращает имя, которое мы и пытались разрешить. Используя это мы можем написать несложную функцию проверки наличия адреса в чёрном списке и добавить её к PHP-файлам нашего сайта. Код надо добавлять в самое начала файла index.php и остальных файлов, к которым будет обращаться посетитель. Добавляемый код выглядит примерно так:
# Функция проверки наличия IP-адреса в чёрном списке
function checkipbl($ip)
{
# Получаем имя хоста для разрешения
$ip1=explode(".",$ip);
$ip2=$ip1[3].".".$ip1[2].".".$ip1[1].".".$ip1[0].".bl.spamcop.net.";
# Разрешаем имя хоста
$r=gethostbyname($ip2);
# Возвращаем результат - если удалось разрешить имя - возвращаем истину.
# Если же нет - ложь.
return ($r!=$ip2);
}
# Если адрес клиента в чёрном списке...
if (checkipbl($_SERVER["REMOTE_ADDR"]))
{
# ...сообщаем ему об этом...
print "Sorry, but your IP (".$_SERVER["REMOTE_ADDR"].") blacklisted at spamcop.net";
# ...и завершаем скрипт.
exit;
}
Теперь если пользователь заходит с IP-адреса, находящегося в чёрном списке, на веб-сайт - ему будет показано сообщение вида: «Sorry, but your IP 11.33.22.44 blacklisted at spamcop.net».
Конечно в чёрном списке не все адреса спамеров, но хотя бы от части из них этот метод избавит. К тому же можно использовать несколько различных чёрных списоков, для повышения качества отсева.
Приятной работы!

Alex 2008-08-10 08:29:55 (#)
Например: дата, заблокировано, пропущено