Новости / 18.10.2026
Защита сайта от ботов: как отсеять ботов и не потерять поисковики
Боты парсят цены, перебирают пароли и нагружают сервер. Как отличить бота от человека, не мешая Google и Яндексу, и что делать с ботнетами, которые меняют User-Agent.

Значительная часть трафика любого сайта — боты. Одни полезны, как поисковые роботы. Другие парсят цены, перебирают пароли, создают фейковые регистрации или просто грузят сервер тысячами запросов. Задача защиты — отсеять вторых, не задев первых и живых посетителей.
Почему не работает блок по User-Agent
User-Agent подделывает любой скрипт. Бот назовётся свежим Chrome или Googlebot, и фильтр по имени его пропустит.
Что работает
- Проверка браузера. Браузер посетителя решает небольшую вычислительную задачу, обычно меньше чем за секунду, и получает метку на 30 минут. Пока человек пользуется сайтом, метка продлевается сама. Скрипты без настоящего браузера задачу не решают.
- Капча только для оставшихся. Обычный посетитель её не видит. Сдвинуть пластину на место просим только тех, кому не хватило невидимой проверки.
- Отпечаток TLS (JA4). Он описывает, как программа устанавливает защищённое соединение. У ботнета отпечаток обычно одинаковый, даже когда User-Agent меняется. Такой отпечаток можно заблокировать целиком.
- Лимиты и правила по путям. Например, не больше нескольких попыток входа в минуту с одного адреса.
Как не задеть поисковики
Поисковых роботов мы проверяем не по имени. Адрес настоящего Googlebot по обратной DNS-записи ведёт в домен googlebot.com, а прямая запись этого имени возвращает тот же адрес. Подтверждённые Googlebot, YandexBot, Bingbot и сервисы превью ссылок вроде Telegram и WhatsApp проходят мимо проверки браузера. Бот, который просто назвался Googlebot, проходит проверку как все. Полный список — в разделе «Известные боты».
Фоновые запросы и API
Страницу проверки нельзя показать запросу из скрипта страницы или мобильного приложения. Фоновые запросы (fetch, JSON, статика) без метки получают короткий ответ 429 вместо страницы проверки. Для API-клиентов без браузера добавьте правило «Разрешить» по пути или адресу.