Как заблокировать Semrush и других ботов на сайте
Почти каждый владелец сайта сталкивается с активностью ботов на своем сайте. Активность ботов известных поисковых систем обычно не создает существенной нагрузки и не сильно влияет на скорость работы сайта.
Однако есть и другие боты, например DotBot или Semrush. Наши клиенты сталкивались с тем, что эти боты отправляли настолько много запросов на сайт, что это было подобно эффекту небольшой DDoS-атаки. Это приводило к большой нагрузке на сайт и сервер, и недоступности сайта для других посетителей.
Мы расскажем, как заблокировать DotBot, Semrush и других ботов.
Блокировка ботов на хостинге и VDS
На многих хостингах есть поддержка правил вебсервера Apache. Если вы размещаетесь на таком хостинге,
то перейдите в каталог с сайтом. Найдите файл .htaccess
. Добавьте в начало файла следующие строки:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GeedoProductSearch|GPTBot|GeedoBot|Amazonbot|Bytespider|SeopultContentAnalyzer|SeekportBot|DataForSeoBot|Barkrowler|BLEXBot|SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|PetalBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru|thesis-research-bot|fidget-spinner-bot|facebookexternalhit|GPTBot) [NC]
RewriteRule .* - [F,L]
Вот как это можно сделать на хостинге NetAngels:
- откройте панель управления
- кликните по нужному сайту
- выберите “Файловый менеджер”.
- перейдите в каталог
www
- найдите файл
.htaccess
, правым кликом из контекстного меню выберите “правка”. - добавьте в начало файла строки выше
- сохраните файл
Готово!
Как заблокировать ботов, если ваш сайт на VDS
На VDS в качестве вебсервера часто используются:
- Только apache. Воспользуйтесь инструкциями для htaccess
- nginx + apache. Можно использовать инструкции для htaccess
- Только nginx. Инструкции по настройке через htaccess не подойдут. Подробнее смотрите ниже.
Блокировка через nginx
Мы предполагаем, что у вас есть доступ root на VDS сервер. Зайдите через SSH на сервер от имени пользователя root. Можно подключиться через SSH по нашей статье.
Если вы не уверены какой вебсервер используется на VDS, то выполните команду
netstat -ntlp | grep 80 | grep -v '127.0.0.1' | cut -d / -f 2 | cut -d ':' -f1
Если результат будет такой:
apache2
То выполните инструкции для htaccess.
Если же команда вернула
nginx
То перейдите в каталог с конфигурацией nginx:
cd /etc/nginx
Создайте файл, в котором будут правила блокировки
mcedit bots-block.conf
Вставьте в этот файл текст:
if ($http_user_agent ~* GeedoProductSearch|GPTBot|GeedoBot|Amazonbot|Bytespider|SeopultContentAnalyzer|SeekportBot|DataForSeoBot|Barkrowler|BLEXBot|SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|PetalBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru|thesis-research-bot|fidget-spinner-bot|facebookexternalhit) { return 444; }
Сохраните изменения нажав F2, затем Enter.
Перейдите в каталог с сайтами
cd sites-enabled
Просмотрите содержимое каталога
ls .
Определите сайты, где вы хотите заблокировать ботов.
Например, если нужно заблокировать ботов на сайте vm-79395343.na4u.ru
:
root@vm-79395343:/etc/nginx/sites-enabled# ls .
000-default vm-79395343.na4u.ru.conf
То отредактируйте файл с его конфигурацией:
root@vm-79395343:/etc/nginx/sites-enabled# mcedit vm-79395343.na4u.ru.conf
В блок server
добавьте строку
include /etc/nginx/bots-block.conf
На нашем сервере конфигурация стала выглядеть вот так:
server {
include listen.conf;
include /etc/nginx/bots-block.conf; # добавленная строка
server_name vm-79395343.na4u.ru;
access_log off;
proxy_read_timeout 200s;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript applicat
gzip_comp_level 5;
location ~* ^(?!/mysql/).+\.(jpg|jpeg|gif|png|svg|js|css|mp3|bmp|swf|ogg|mpe?g|avi|zip|gz|bz2?|rar|ico|html|htm|txt|woff)$ {
root /home/web/vm-79395343.na4u.ru/www/;
expires 30d;
try_files $uri @apache2;
}
location @apache2 {
proxy_pass http://backend;
include proxy_params;
}
location / {
proxy_pass http://backend;
include proxy_params;
}
}
Сохраните изменения нажав F2, затем Enter.
Проверьте конфигурацию:
service nginx configtest
Если тестирование прошло успешно, то перезапустите веб-сервер для применения изменений:
service nginx restart
Проверьте, что все в порядке после перезапуска:
service nginx status
Проверка показывает, что если представляться ботом SemrushBot, то запрос блокируется:
$ curl -I -A "SemrushBot" vm-79395343.na4u.ru
curl: (52) Empty reply from server
$ curl -I -A "Yandex" vm-79395343.na4u.ru
HTTP/1.1 403 Forbidden
Server: nginx/1.14.1
Date: Thu, 04 Jul 2019 09:28:48 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Vary: Accept-Encoding
Готово!