БЛОКИРУЕМ БОТОВ, СОЗДАЮЩИХ НАГРУЗКУ НА САЙТ

БЛОКИРУЕМ БОТОВ, СОЗДАЮЩИХ НАГРУЗКУ НА САЙТ

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

Пользы от подобных ботов никакой, они не используются как поисковые системы и, следовательно, не могут привести на ваш сайт посетителей.  Но они создают нагрузку на ресурс, замедляя его работу, в некоторых случаях сайт может ошибку 502, либо вообще может быть выключенным хостером, чтобы не мешать работе других сайтов расположенных на этом же сервере.

Чтобы выяснить какой бот создает нагрузку, включаем запись логов, если она не включена. Через пару часов, когда записей накопится достаточное количество, скачиваем и открываем в редакторе access_log.

petalbot

На моем примере видно, что одним из источников нагрузки является petalbot, запросы от которого сыплются как из рога изобилия. Ниже также множество запросов от другого бота, но уже из сети Huawei. На первый взгляд, самый очевидный вариант, заблокировать все IP адреса, с которых идут запросы. Но бот может приходить с сотен адресов. Выбирать все адреса вручную и блокировать их? может занять очень много времени. По сути это игра в прятки, поймай меня, если сможешь.

Самый простой вариант заблокировать бота через .htaccess.  Для чего прописываем

<IfModule mod_rewrite.c>

RewriteCond %{HTTP_USER_AGENT} имя ботаt [NC]

RewriteRule .* - [F,L]

</IfModule>

Так для блокировки бота petalbot запись будет иметь следующий вид

<IfModule mod_rewrite.c>

RewriteCond %{HTTP_USER_AGENT} petalbot [NC]

RewriteRule .* - [F,L]

</IfModule>

Это все!

Да прибудет с вами сила)))

Чуть не забыл, если у вас VDS c nginx, то добавляем в nginx.conf

if ($http_user_agent ~* (имя_бота) ) {

return 403;

}

Где прописываем имя надоедливого бота