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 (#)
Например: дата, заблокировано, пропущено