Как заблокировать Semrush и других ботов на сайте

04 июля 2019
410
apache
htaccess

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

Однако есть и другие боты, например DotBot или Semrush. Наши клиенты сталкивались с тем, что эти боты отправляли настолько много запросов на сайт, что это было подобно эффекту небольшой DDoS-атаки. Это приводило к большой нагрузке на сайт и сервер, и недоступности сайта для других посетителей.

Мы расскажем, как заблокировать DotBot, Semrush и других ботов.

Блокировка ботов на хостинге и VDS

На многих хостингах есть поддержка правил вебсервера Apache. Если вы размещаетесь на таком хостинге, то перейдите в каталог с сайтом. Найдите файл .htaccess. Добавьте в начало файла следующие строки:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru) [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 ~* SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru) {
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

Готово!

Рекомендуемые статьи:

Мы используем файлы cookie для предоставления наших услуг, а также для аналитики и маркетинга. Продолжая просматривать наш веб-сайт, вы соглашаетесь на использование нами файлов cookie.
ОК