Снижение нагрузки на сервер, путем блокировки ботов

Снижение нагрузки на сервер, путем блокировки ботов

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

Из-за этого создается абсолютно ненужная нагрузка на сервер. Расходуется как процессорное время, так и дисковые ресурсы. Порой нагрузка настолько высока, что приходится задуматься о блокировке этих ботов.

Для начала определимся какие боты нужно оставить, а какие нет. Вопрос не однозначный, но полагаю никто не будет спорить, что блокировать общеизвестные поисковые роботы типа GOOGLE и Яндекс однозначно не стоит.

Вариантов блокировки два:

  1. в настройках .htaccess , если у вас один сайт
  2. в настройках фаерволла, если у вас свой сервер и сайтов несколько

Итак, рассмотрим первый вариант.

Как известно, заблокировать бота можно по  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

Если будут вопросы или комментарии, пишите через форму ниже.

No Comments

Post a Comment