Как заблокировать кастомных ботов и другие user-agent.

12.03.2020
Сложность
3 мин.
2792

Заблокировать любых user-agent, которые обращаются к сайту можно посредством .htaccess файла и в конфигурации nginx. Для пользователей хостинга, чаще всего подходит именно .htaccess, так как к конфигурации nginx сервера не всегда есть доступ.

  1. Зайдите в свой аккаунт через FTP или SSH.
  2. Создайте файл .htaccess в корневой директории сайта, если такого файла нет.
  3. Внесите в начале файла блокировки, изменив Имя_вашего_user_agent1 и Имя_вашего_user_agent2 на своих user-agent, после чего файл сохраните:
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^.*(Имя_вашего_user_agent1|Имя_вашего_user_agent2).*$ [NC]
    RewriteRule ^.* - [F,L]

    Запросы к вашему сайту, а также user-agent (определение браузера/ОС обращающегося к сайту пира) можно найти в access логах сайта.

  4. Возьмите любого заблокированного бота и проверьте curl доступность сайта:
    curl -I --user-agent "Имя_вашего_user_agent1" http://your_site.ru/
    Если блокировка работает, то ответ будет "HTTP/1.1 403 Forbidden".
  1. Зайдите на сервер через SSH под root пользователем.
  2. Создайте файл с кастомными блокировками:
  3. touch /etc/nginx/vhosts-includes/custom_blocks.conf
  4. Внесите в начале файла блокировки, изменив Имя_вашего_user_agent1 и Имя_вашего_user_agent2 на своих user-agent, после чего файл сохраните:
    ### case insensitive
    if ($http_user_agent ~* (Имя_вашего_user_agent1|Имя_вашего_user_agent2)) {
    return 403;
    }

    Если в имени user-agent есть пробел, например, Net Vampire, в конфигурации nginx нужно пробел заменить на \s. В итоге будет Net\sVampire.

    Запросы к вашему сайту, а также user-agent (определение браузера/ОС обращающегося к сайту пира) можно найти в access логах сайта.

  5. Проверьте конфигурацию nginx:
    nginx -t
  6. Если ошибок в конфигурации нет, перезагрузите службу nginx:
    service nginx reload
    Если reload не сработал:
    service nginx restart
  7. Возьмите любого заблокированного бота и проверьте curl доступность сайта:
    curl -I --user-agent "Имя_вашего_user_agent1" http://your_site.ru/
    Если блокировка работает, то ответ будет "HTTP/1.1 403 Forbidden".
Были ли сведения полезными?
8 
Продолжая использовать этот сайт и пользуясь нашими услугами, Вы соглашаетесь с Правилами и условиями веб-сайта и использованием файлов cookie на нашем веб-сайте. Также ознакомьтесь с нашей Политикой конфиденциальности, согласно которой, в заявленной степени, Вы соглашаетесь на обработку Ваших персональных данных.