Багато спам-ботів, щоб приховати свої реальні імена (назви), які легко відстежити по запису 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

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