Багато спам-ботів, щоб приховати свої реальні імена (назви), які легко відстежити по запису user_agent, змінюють цю запис, змінюючи її на записи різних браузерів (наприклад: «mozilla/4.0 (compatible; msie 5.5; windows nt 5.0)» і так далі). Також ці боти ігнорують стандарти записів файлу robots.txt (опис стандарту Ви можете прочитати тут http://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) на самому початку вхідний сторінки сайту:

Пастка для спам-бота

Тепер можна чекати і переглядати лог сервера, щоб подивитися, хто перейшов по посиланню.
Людина не побачить цього посилання, тому не зможе за неї перейти, а пошукові системи управляються директивами, записаними в фалі robots.txt , тому ніколи не відвідають директорію /bot-trap.

4. В створену нами директорію ми помістимо /bot-trap/index.php. За допомогою цього скрипта ми будемо автоматично зберігати всі ip адреси в файл blacklist.dat.
Для початку створіть пустий файл ../blacklist.dat і зробіть його доступним для читання і запису на сервері.

* У тексті скрипта змініть деякі значення

= “4.2.0”) {
extract($_server);
}
?>

Тут нема чого дивитися. Так що ж Ви тут робите?

повернутися назад

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 = “[email protected]”;
$to = “[email protected]”;
$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);
}
?>

5. Щоб виключити повторний захід спам-бота на страницвы сайту, перед виведенням будь сторінка сайту потрібно перевіряти вміст файлу blacklist.dat:

Це текст скрипта blacklist.php , який потрібно підключати до всіх сторінок Вашого сайту:

= “4.2.0”) {
extract($_server);
}
$badbot = 0;
/* перебираємо всі записи файлу blacklist.dat */
$filename = “../blacklist.dat”;
$fp = fopen($filename, “r”) or die (“Помилка відкриття файлу …
n”);
while ($line = fgets($fp,255)) {
$u = explode(” “,$line);
if (ereg($u[0],$remote_addr)) {$badbot++;}
}
fclose($fp);
if ($badbot > 0) { /* це спам-бот, забороняємо вхід на сайт */
sleep(12);
print (“n”);
print (“Сайт недоступний.n”);
print (“n”);
print (“

Ласкаво просимо!

n”);
print (“

Цей сайт тимчасово недоступний …

n”);
print (“

Якщо Ви вважаєте, що це помилка, надішліть листа власнику сайту.

n”);
print (“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

Сподіваємося, що це допоможе Вам позбутися (хоча б частково) від крадіжок адрес електронної пошти з сторінок Вашого сайту.