Ловушка для спам-бота

08 мар 05

Ловушка для спам-бота - 100 % работающий скрипт!

Многие спам-боты, чтобы скрыть свои реальные имена (названия), которые легко отследить по записи user_agent, изменяют эту запись, меняя её на записи разных браузеров (например: "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)" и так далее). Также эти боты игнорируют стандарты записей для файла robots.txt (описание стандарта Вы можете прочесть здесьwww.robotstxt.org/wc/exclusion.html robots.txt standard).
Можно, конечно, пойти путём записи нужных инструкций в файл robots.txt, а можно и предпринять другой способ, который мы опишем ниже.

Метод №1

Используем специальную директорию /bot-trap:
1. создайте поддиректорию /bot-trap (можете использовать любое другое имя)
2. сделайте такую запись в файле robots.txt:

User-agent: *
Disallow: /bot-trap/

3. вставьте невидимую ссылку (это пиксел размера 1х1) в самом начале входной страницы сайта:
<a href="/bot-trap/"><img src="images/pixel.gif" border="0" alt=" " width="1" height="1"></a>
Теперь можно ждать и просматривать лог сервера, чтобы посмотреть кто перешёл по этой ссылке.
Человек не увидит этой ссылки, поэтому не сможет по ней перейти, а поисковые системы управляются директивами, записанными в фале robots.txt , поэтому никогда не посетят директорию /bot-trap.4. В созданную нами директорию мы поместим /bot-trap/index.php. С помощью этого скрипта мы будем автоматически сохранять все IP адреса в файл blacklist.dat.
Для начала создайте пустой файл ../blacklist.dat и сделайте его доступным для чтения и записи на сервере.
* В тексте скрипта измените значения, выделенные курсивом.
<?php
if(phpversion() >= "4.2.0") {
extract($_SERVER);
}
?>
<html>
<head><title> </title></head>
<body>
<p>Здесь нечего смотреть. Так что же Вы здесь делаете?</p>
<p><a href="http://your.domain.ru/">вернуться назад</a></p>
<?php
$badbot = 0;
/* перебираем все записи файла blacklist.dat,
чтобы не допустить задвоенности данных */
$filename = "../blacklist.dat";
$fp = fopen($filename, "r") or die ("Ошибка открытия файла ... <br>n");
while ($line = fgets($fp,255)) {
$u = explode(" ",$line);
if (ereg($u[0],$REMOTE_ADDR)) {$badbot++;}
}
fclose($fp);
if ($badbot == 0) {
/* отсылаем информацию веб-мастеру */
$tmestamp = time();
$datum = date("Y-m-d (D) H:i:s",$tmestamp);
$from = "badbot-watch@domain.ru";
$to = "hostmaster@domain.ru";
$subject = "Внимание! На сайт заходил спам-бот!";
$msg = "Бот пришёл с $REQUEST_URI $datum n";
$msg .= "адрес $REMOTE_ADDR, агент $HTTP_USER_AGENTn";
mail($to, $subject, $msg, "From: $from");
/* добавляем запись в лог-файл blacklist.dat */
$fp = fopen($filename,"a+");
fwrite($fp,"$REMOTE_ADDR - - [$datum]
"$REQUEST_METHOD $REQUEST_URI $SERVER_PROTOCOL"
$HTTP_REFERER $HTTP_USER_AGENTn");
fclose($fp);
}
?>
</body>
</html>
5. Чтобы исключить повторный заход спам-бота на страницвы сайта, перед выводом любой страница сайта нужно проверять содержимое файла blacklist.dat:
<?php include($_SERVER["DOCUMENT_ROOT"] . "/blacklist.php"); ?>
Это текст скрипта blacklist.php, который нужно подключать ко всем страницам Вашего сайта:
<?php
if(phpversion() >= "4.2.0") {
extract($_SERVER);
}
$badbot = 0;
/* перебираем все записи файла blacklist.dat */
$filename = "../blacklist.dat";
$fp = fopen($filename, "r") or die ("Ошибка открытия файла ... <br>n");
while ($line = fgets($fp,255)) {
$u = explode(" ",$line);
if (ereg($u[0],$REMOTE_ADDR)) {$badbot++;}
}
fclose($fp);
if ($badbot > 0) { /* это спам-бот, запрещаем вход на сайт */
sleep(12);
print ("<html><head>n");
print ("<title>Сайт недоступен.</title>n");
print ("</head><body>n");
print ("<center><h1>Добро пожаловать!</h1></center>n");
print ("<p><center>Этот сайт временно недоступен ...</center></p>n");
print ("<p><center>Если Вы считаете, что это ошибка,
отправьте письмо владельцу сайта.</center></p>n");
print ("</body></html>n");
exit;
}
?>

Метод №2

Другой метод не использует PHP и также запрещает доступ спам-ботов к Вашему сайту. Он заключается в использовании файла .htaccess.
Пример записи:
SetEnvIfNoCase User-Agent "Indy Library" bad_bot
SetEnvIfNoCase User-Agent "Internet Explore 5.x" bad_bot
SetEnvIf Remote_Addr "195.154.174.[0-9]+" bad_bot
SetEnvIf Remote_Addr "211.101.[45].[0-9]+" bad_bot
Order Allow,Deny
Allow from all
Deny from env=bad_bot
Надеемся, что это поможет Вам избавиться (хотя бы частично) от воровства адресов электронной почты со страниц Вашего сайта.

1111http://infonew.ru/bottrap/