Защищаем WordPress от спам ботов и авто ботов.

Рассмотрим скрипт, который позволяет «вычислить» как спам ботов, так и авто ботов и закрывать им доступ на весь сайт.

Всех «нехороших» ботов объединяет следующее: попадая на любую страницу сайта, подобные боты первым делом пробегаются по всем ссылкам на страничке для того, чтобы выяснить, где еще можно наспамить или что-нибудь скачать. Вот на этом и будет основан наш скрипт защиты от ботов.

Для начала создайте папку bad_bot в корне сайта. В папке bad_bot создайте четыре файла:

1) black_list.dat — изначально пустой файл, в который будет помещаться информация о ботах, «попавших в ловушку»;

2) pixel.gif — прозрачный файл размером в 1 пиксель. Простой человек его не видит, но только не бот. Скачать данный файл Вы можете по ссылке;

3) black_list.php — страничка, со скриптом перейдя на которую бот будет «в ловушке», а вся необходимая информация о боте будет помещена в файл black_list.dat;

4) index.php — скрипт, проверяющий есть ли данный IP в списке ботов. Если есть, то доступ для данного IP блокируется.

Теперь поместите в файл black_list.php следующий код:

<?php
echo '<html><body><p>Как Вы сюда попали?</p>';
echo '<p><a href="http://Ваш_домен.ru/">вернуться на главную страницу</a></p>';
if(phpversion() >= "4.2.0") {extract($_SERVER);}
$bad_bot 0;
/* Смотрим, имеется ли такой же IP в базе */
$file_name "black_list.dat";
$fp fopen($file_name"r") or die ("Ошибка файла<br>");
while ($line fgets($fp255)) {
$u explode(" "$line);
if (preg_match("/".$u[0]."/"$REMOTE_ADDR)) {$bad_bot++;}
}
fclose($fp);
if ($bad_bot == 0) {
$tmestamp time();
$datum date("H:i:s d.m.Y",$tmestamp);
/* отсылаем отчет на email */
$to "Ваш почтовый ящик";
$subject "Заголовок сообщения";
$msg "Пришёл с $REQUEST_URI $datum IP: $REMOTE_ADDR, User-агент $HTTP_USER_AGENT";
mail($to$subject$msg);
/* Если отсылать отчет на email не надо, то 4 строки выше можно удалить*/

/* Добавляем запись в файл black_list.dat */
$fp fopen($file_name,'a+');
fwrite($fp,"$REMOTE_ADDR $datum $REQUEST_URI $HTTP_REFERER $HTTP_USER_AGENT\r\n");
fclose($fp);
}
echo '</body></html>';
?>

Далее в файл index.php поместите следующий код:

<?php
if(phpversion() >= "4.2.0") {extract($_SERVER);}
$bad_bot 0;
/* перебираем все записи в файле black_list.dat */
$file_name "bad_bot/black_list.dat";
$fp fopen($file_name"r") or die ("Ошибка файла<br>");
while ($line fgets($fp255)) {
$data explode(" "$line);
if (preg_match("/".$data[0]."/"$REMOTE_ADDR)) {$bad_bot++;}
}
fclose($fp);
if ($bad_bot 0) { /* это бот и мы запрещаем ему вход на сайт */
sleep(3);            /* задержка загрузки странички */
echo '<html><head>';
echo '<title>Сайт временно недоступен.</title>';
echo '</head><body><br>';
echo '<center><h1>Сайт временно недоступен!</h1></center><br>';
echo '<p><center>Приносим свои извинения ...</center></p><br>';
echo '</body></html>';
exit;
}
?>

Обязательно в файле robots.txt запрещаем индексацию данной папки путем добавления строчки:

disallow: /bad_bot/

Теперь для защиты вашего сайта от ботов, на всех страницах сайта разместите не видимую ссылку следующим образом:

<a href="bad_bot/black_list.php">
<img src="bad_bot/pixel.gif" border="0" alt="" width="1" height="1">
</a>

Перед выводом каждой странички необходимо постоянно проверять содержимое файла black_list.dat, чтобы отсеивать «попавшихся» ботов. Для этого просто добавьте на все странички следующий код:

<?php include("bad_bot/index.php"); ?>

Файлу blacklist.dat необходимо дать на сервере права доступа для чтения и записи – 666.

Использовать данный скрипт необходимо с осторожностью, т.к. он может заблокировать и некоторых «хороших» ботов. Например, ботов, которые создают карту Вашего сайта.

Если есть вопросы, то пишем в комментариях и не забываем проголосовать за статью.
Защищаем WordPress от спам ботов и авто ботов.
5 (100%) 4 votes

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *