Снижение нагрузки на сервер, путем блокировки ботов
Некоторые боты совсем уж назойливые, и создается впечатление, что парсинг сайтов на вашем сервере ими не регламентируется по частоте заходов.
Из-за этого создается абсолютно ненужная нагрузка на сервер. Расходуется как процессорное время, так и дисковые ресурсы. Порой нагрузка настолько высока, что приходится задуматься о блокировке этих ботов.
Для начала определимся какие боты нужно оставить, а какие нет. Вопрос не однозначный, но полагаю никто не будет спорить, что блокировать общеизвестные поисковые роботы типа GOOGLE и Яндекс однозначно не стоит.
Вариантов блокировки два:
- в настройках .htaccess , если у вас один сайт
- в настройках фаерволла, если у вас свой сервер и сайтов несколько
Итак, рассмотрим первый вариант.
Как известно, заблокировать бота можно по IP адресу, либо по useragent.
В любом случае, предварительно нужно проанализировать access.log и понять с каких адресов и кто заходит больше всего.
Выборку по количеству обращений с определенных IP адресов можно сделать командой:
awk ‘{print $1}’ /var/log/ВАШ_access_log | sort | uniq -c | sort -nr | head -n 50
Получив список желаемых IP адресов, проверьте чьи они (в логах) и по необходимости заблокируйте через deny from XXX.XXX.XXX.XXX в файле .htaccess. Либо можно заблокировать напрямую в фаерволе.
пример для iptables
iptables -I INPUT -s 111.222.333.444 -j DROP
пример для firewalld
firewall-cmd —zone=public —add-rich-rule=’rule family=»ipv4″ source address=»111.222.333.444″ reject’
Проблема в том, что ботов достаточно много, а IP адресов, которые ими используются — десятки тысяч. Некоторые находятся в диапазонах, которые легко забанить, а некоторые — отдельные IP адреса из различных подсетей (можно нагуглить списки). Короче забанить все — проблематично, поэтому если лень возиться с IP адресами, можно заблокировать ботов по юзерагенту следующей командой:
RewriteCond %{QUERY_STRING} .
RewriteCond %{HTTP_USER_AGENT} 11A465|Ahrefs|ArchiveBot|AspiegelBot|Baiduspider|BLEXBot|Bytespider| CCBot|Curebot|Daum|Detectify|DotBot|Grapeshot|heritrix|Kinza|LieBaoFast| Linguee|LMY47V|MauiBot|Mb2345Browser|MegaIndex|MicroMessenger| MJ12bot|MQQBrowser|PageFreezer|PiplBot|Riddler|Screaming.Frog| Search365bot|Seekport|SemanticScholarBot|SemrushBot|SEOkicks| serpstatbot|Siteimprove.com|Sogou.web.spider|trendictionbot| TurnitinBot|UCBrowser|weborama-fetcher|Vagabondo| VelenPublicWebCrawler|YisouSpider [NC]
RewriteRule ^.* — [F,L]
Какие блокировать, какие нет — решать вам.
А вот список IP адресов, которые я нашел при беглом поиске в своих логах. Скорее всего их гораздо больше, но я выбрал только те, которые слишком настойчиво увеличивали логи 😉
#ahrefs
54.36.148.0/24
54.36.149.0/24
54.36.150.0/24#aspiegelbot
114.119.160.0/24
114.119.161.0/24
114.119.162.0/24
114.119.163.0/24
114.119.164.0/24
114.119.165.0/24#dotbot
216.244.66.244#zoominfobot
35.227.109.85#MJ12bot
192.95.29.186#Sogou web spider
111.202.100.116
111.202.103.77
49.7.20.101#SemrushBot
46.229.168.143
46.229.168.135#SeznamBot
77.75.76.168#DynatraceSynthetic
54.236.59.176#SentiBot
95.217.74.54
Если будут вопросы или комментарии, пишите через форму ниже.