TurtleGuard

Новости / 18.10.2026

Защита сайта от ботов: как отсеять ботов и не потерять поисковики

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

новость18.10.20261 минута чтения

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

Почему не работает блок по User-Agent

User-Agent подделывает любой скрипт. Бот назовётся свежим Chrome или Googlebot, и фильтр по имени его пропустит.

Что работает

  1. Проверка браузера. Браузер посетителя решает небольшую вычислительную задачу, обычно меньше чем за секунду, и получает метку на 30 минут. Пока человек пользуется сайтом, метка продлевается сама. Скрипты без настоящего браузера задачу не решают.
  2. Капча только для оставшихся. Обычный посетитель её не видит. Сдвинуть пластину на место просим только тех, кому не хватило невидимой проверки.
  3. Отпечаток TLS (JA4). Он описывает, как программа устанавливает защищённое соединение. У ботнета отпечаток обычно одинаковый, даже когда User-Agent меняется. Такой отпечаток можно заблокировать целиком.
  4. Лимиты и правила по путям. Например, не больше нескольких попыток входа в минуту с одного адреса.

Как не задеть поисковики

Поисковых роботов мы проверяем не по имени. Адрес настоящего Googlebot по обратной DNS-записи ведёт в домен googlebot.com, а прямая запись этого имени возвращает тот же адрес. Подтверждённые Googlebot, YandexBot, Bingbot и сервисы превью ссылок вроде Telegram и WhatsApp проходят мимо проверки браузера. Бот, который просто назвался Googlebot, проходит проверку как все. Полный список — в разделе «Известные боты».

Фоновые запросы и API

Страницу проверки нельзя показать запросу из скрипта страницы или мобильного приложения. Фоновые запросы (fetch, JSON, статика) без метки получают короткий ответ 429 вместо страницы проверки. Для API-клиентов без браузера добавьте правило «Разрешить» по пути или адресу.

Подключить сайт