Защита сайта от ботов: как отличить ботов и что с ними делать
Защита сайта от ботов — это набор мер, которые отделяют автоматический трафик от живых посетителей и отсекают вредный, не мешая полезному. По данным Imperva Bad Bot Report 2025 (трафик за 2024 год), автоматические запросы впервые за десять лет превысили половину веб-трафика — 51%, а на вредоносных ботов пришлось около 37%. Для бизнеса это спам в заявках, перебор паролей к админке, скопированный каталог, слитый рекламный бюджет и испорченная аналитика.
Разберём, какие боты бывают, как увидеть их в Метрике и логах, что работает на формах, в админке, на сервере и в рекламе — и как при этом не заблокировать поисковых роботов.
Какие боты заходят на сайт: полезные и вредные
Бот — программа, которая открывает страницы и выполняет действия без участия человека. Задача защиты — не «убрать всех ботов», а пропускать нужных и останавливать вредных.
Полезные: поисковые роботы (YandexBot, Googlebot и их специализированные роботы), мониторинги доступности и SSL, роботы Метрики и Вебмастера, webhook-и платёжных систем и CRM, загрузчики товарных фидов, превью ссылок в мессенджерах. Отдельно — ИИ-краулеры, собирающие тексты для нейросетей: пускать их или нет, решает бизнес, но запрет снижает шансы попасть в ответы ИИ-ассистентов.
Вредные всегда преследуют экономическую цель — получить данные, деньги или навредить конкуренту:
| Бот | Как проявляется | Чем вредит | Чем защищаться |
|---|---|---|---|
| Спам форм | Заявки с мусором, ссылками, несуществующими телефонами, десятки в час | Менеджеры тратят время, настоящие заявки теряются | Капча, honeypot, проверка токена, лимиты на отправку |
| Брутфорс админки | Сотни запросов к странице входа с разных IP | Взлом, заражение сайта, утечка базы клиентов | Двухфакторная авторизация, доступ по IP, fail2ban |
| Парсеры | Равномерный обход каталога, много страниц за минуту, без CSS и картинок | Копирование цен и контента, нагрузка на сервер | Rate limiting, антибот-сервис, JS-проверка |
| Скликивание рекламы | Клики без действий, 100% отказов, подозрительные площадки РСЯ | Слив бюджета, обучение стратегий на мусоре | Антифрод Директа, исключение площадок, цели для оптимизации |
| Накрутка ПФ | Всплеск визитов из поиска по одному запросу, короткие сессии | Искажение аналитики, риск санкций поисковика | Мониторинг Метрики, фиксация аномалий, обращение в поддержку |
| Кардинг и скальперы | Серии мелких оплат с разных карт, выкуп лимитированного товара за секунды | Чарджбэки, штрафы эквайера, пустой склад | 3-D Secure, лимиты попыток оплаты и на заказ |
| Фейковые регистрации | Аккаунты на одноразовую почту, всплеск SMS-подтверждений | Злоупотребление бонусами, счета за SMS | Подтверждение телефона с лимитами, капча, проверка доменов почты |
Массированные атаки, цель которых — положить сайт, относятся уже к DDoS, и меры там другие: фильтрация трафика до вашего сервера. Подробно — в статье что такое DDoS-атака и как защитить сайт.
Как понять, что на сайте боты: признаки, Метрика и логи
Простые боты ведут себя шаблонно, сложные эмулируют браузер и ходят через домашние прокси — их выдаёт только совокупность признаков:
- отказы у источника или страницы близки к 100%, время на сайте — секунды;
- всплеск прямых заходов или переходов из поиска без связи с рекламой или сезоном;
- много визитов из одной подсети или от одного хостинг-провайдера, пики ночью, равномерные интервалы между запросами;
- трафик растёт, а заявок нет — или заявок много, но дозвониться невозможно;
- User-Agent называет себя Googlebot или YandexBot, а IP-адрес им не принадлежит.
Боты в Яндекс Метрике: роботность и фильтры
По умолчанию Метрика исключает из отчётов только роботов, определённых по строгим правилам (представились, известный User-Agent или IP). Роботы, выявленные по поведению, в статистике остаются.
- Отчёт «Роботы» (группа «Мониторинг») — какие роботы приходят и по каким правилам отфильтрованы.
- Метрика «Роботность» в отчёте «Источники, сводка» — источник с резко повышенной роботностью и есть кандидат на разбор.
- Фильтр в настройках счётчика «по строгим правилам и по поведению» удаляет роботов из исходных данных — вернуть эти визиты в статистику потом нельзя.
- Вебвизор — мгновенный скролл до конца, клики в одну точку, форма заполнена за долю секунды — типичный почерк бота.
Метрика и Директ используют разные системы определения роботов: визит-робот в Метрике не означает, что Директ взял за него деньги.
Как найти ботов в логах сервера
Метрика видит только тех, кто выполнил JavaScript-счётчик. Брутфорс, спам через прямой POST-запрос и простые парсеры видны лишь в access-логе:
# топ-20 IP по числу запросов
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# кто долбит страницу входа
grep -E "POST /(wp-login\.php|bitrix/admin|admin/login)" /var/log/nginx/access.log \
| awk '{print $1}' | sort | uniq -c | sort -rn | head
# самые частые User-Agent
awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
По подозрительным адресам дальше смотрят принадлежность сети (whois) и распределение запросов по времени и страницам. Такой разбор входит в аудит безопасности сайта — там же проверяют, насколько формы, админка и API уязвимы к автоматическим атакам.
Как не заблокировать поисковых роботов: проверка YandexBot и Googlebot
User-Agent подделывается одной строкой, поэтому парсеры часто представляются роботами Яндекса или Google. Проверять нужно IP — методика у обоих поисковиков одна:
- Обратный DNS-запрос по IP из лога:
host IP-адрес. - Проверка окончания имени хоста. У Яндекса —
yandex.ru,yandex.netилиyandex.com; у Google —googlebot.com,google.comилиgoogleusercontent.com. - Прямой DNS-запрос по полученному имени: IP должен совпасть с исходным, иначе имя поддельное.
Google дополнительно публикует IP-диапазоны своих роботов в JSON — их удобно подгружать в конфигурацию автоматически.
Защита форм от спама и фейковых регистраций
Яндекс SmartCaptcha
Российская альтернатива reCAPTCHA: большинству людей достаточно нажать «Я не робот», задание показывается только при подозрительном поведении. Первые 10 000 запросов проверки в месяц бесплатны, дальше — оплата за каждую тысячу по прайсу Yandex Cloud. Для формы обратной связи корпоративного сайта бесплатного объёма обычно хватает.
Ответ капчи обязательно проверяется на сервере: бэкенд отправляет токен в API проверки и принимает заявку только при статусе «ok». Капча без серверной проверки не защищает — бот шлёт POST-запрос прямо в обработчик формы.
Honeypot, токены и лимиты
- Honeypot — скрытое поле: человек его не видит, простой бот заполняет. Заполнено — заявка молча отбрасывается.
- Одноразовый токен формы — выдаётся при загрузке страницы и сверяется при отправке; отсекает ботов, которые не открывают страницу.
- Проверка времени заполнения — форму, отправленную через секунду после загрузки, заполнил не человек.
- Серверная валидация — формат телефона и почты, запрет ссылок в поле «Имя», одноразовые почтовые домены.
- Лимиты — число отправок с одного IP и на один номер за период.
Подтверждение телефона по SMS — сильная мера для регистраций, но боты умеют запускать массовые отправки SMS, и счёт приходит вам. Поэтому перед отправкой кода ставят капчу, лимиты на номер и IP и ограничение стран.
Защита админки от брутфорса
Боты круглосуточно перебирают пароли к стандартным адресам входа популярных CMS. Сложный пароль — минимум, но не защита: он может утечь у сотрудника или подрядчика.
- Двухфакторная авторизация для всех, у кого есть доступ в админку.
- Доступ по IP — админка открывается только из офиса или через корпоративный VPN.
- Fail2ban — читает логи и временно блокирует IP после N неудачных входов, для SSH и страницы входа сайта.
- Лимит попыток в приложении — задержка или блокировка учётной записи после серии ошибок.
Нестандартный адрес админки снижает шум в логах, но это дополнение, а не замена перечисленному.
Защита на сервере: лимиты nginx, подсети, антибот
Rate limiting ограничивает число запросов с одного адреса за единицу времени. В nginx это стандартный модуль limit_req:
http {
# 10 МБ хватает примерно на 160 тысяч адресов
limit_req_zone $binary_remote_addr zone=site:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=forms:10m rate=5r/m;
limit_req_status 429;
server {
location / {
limit_req zone=site burst=20 nodelay;
proxy_pass http://app;
}
location = /api/feedback {
limit_req zone=forms burst=3 nodelay;
proxy_pass http://app;
}
}
}
На весь сайт — 10 запросов в секунду с IP с запасом на всплеск в 20 (страница с картинками и скриптами — пачка запросов сразу), обработчик формы — не больше 5 отправок в минуту. Превысившие лимит получают 429. Значения подбирают по логам: слишком жёсткий лимит ударит по живым посетителям.
set_real_ip_from (адреса прокси) и real_ip_header (например, X-Forwarded-For) лимит сработает на всех посетителей сразу.Блокировка подсетей и ASN хостинг-провайдеров эффективна против парсеров из дата-центров: живые покупатели редко приходят с серверных адресов. Как и зачем конкуренты собирают цены и каталоги, разобрано в статье что такое парсинг сайтов. Но в тех же сетях работают мониторинги, платёжные уведомления, корпоративные VPN и роботы поисковиков, поэтому безопаснее не блокировать их целиком, а показывать проверку или ставить жёсткий лимит. Лимиты и исключения — стандартная часть настройки nginx.
Следующий уровень — WAF, анализирующий содержимое запросов и репутацию адресов; о нём — в статье что такое WAF.
Облачные сервисы защиты от ботов в России
Против ботов, которые эмулируют браузер и распределяют запросы по тысячам домашних прокси, правил nginx мало. Облачный антибот стоит перед сайтом: посетители проходят невидимую JavaScript-проверку и оценку поведения, подозрительным показывается капча или отказ, поисковые роботы пропускаются. На российском рынке антибот-защиту предлагают, в частности, Servicepipe (Cybert), Curator (бывший Qrator Labs), DDoS-Guard и StormWall.
Цены зависят от объёма легитимного трафика, числа доменов и модулей и обычно называются после заявки. Для небольшого сайта со спамом в формах это избыточно; для магазина, который парсят конкуренты, или сервиса с личным кабинетом — часто оправдано. Подключение меняет DNS, SSL и схему получения реальных IP, поэтому его планируют вместе с настройкой серверной инфраструктуры.
Защита от скликивания рекламы в Яндекс Директе
Антифрод Директа работает до показа (если система уверена, что перед ней бот, объявление не показывается), при клике (подозрительного пользователя проверяет капчей) и после перехода.
- Расходы за недействительный трафик автоматически возвращаются на баланс общего счёта, такие клики удаляются из статистики и не участвуют в обучении стратегий.
- Объём отсеянного — в отчёте «Недействительный трафик» Библиотеки отчётов Директа.
- В Вебвизоре видны все визиты, включая отфильтрованные. Сверяйтесь с отчётами группы «Директ» в Метрике — там статистика уже очищена антифродом.
- Если подозрительные клики прошли фильтр, напишите в поддержку: номер объявления, период, номер счётчика Метрики и ссылки на отчёты. Конверсии на фрод Яндекс проверяет только за последние 30 дней — не откладывайте.
Сами: в отчёте Метрики «Директ, площадки» регулярно ищите площадки РСЯ со 100% отказов и нулём конверсий и добавляйте их в запрещённые; оптимизируйте стратегии по заявкам и звонкам, а не по микроцелям, которые бот выполняет легко; защитите форму на посадочной — спам-заявки портят обучение конверсионных стратегий.
Накрутка поведенческих факторов: как заметить и что делать
Боты накрутки ПФ имитируют «хороших» пользователей из поиска; бывает и «скрутка», когда на ваш сайт гонят ботов с плохим поведением. Признаки в Метрике: всплеск переходов из поиска по одному-двум запросам, волны прямых заходов, короткие одинаковые сессии, рост роботности. Заблокировать их сложно — они ходят через мобильные прокси. Практичный порядок: зафиксировать аномалии (скриншоты, даты, запросы) и при просадке позиций написать в поддержку Яндекс Вебмастера.
Защита от ботов и 152-ФЗ: IP-адреса и отпечатки браузера
Антибот обрабатывает IP-адреса, cookie, отпечатки браузера и данные о поведении. В сочетании с другими сведениями они могут быть отнесены к персональным данным, поэтому:
- укажите в политике обработки ПДн сбор технических данных и цель — безопасность сайта;
- задайте срок хранения логов;
- для внешнего сервиса проверьте, где он обрабатывает данные и оформлено ли поручение; зарубежные серверы означают трансграничную передачу;
- не используйте собранные для защиты отпечатки для рекламы — это другая цель обработки.
Это не юридическая консультация: при большом объёме ПДн требования стоит сверить с юристом.
Типичные ошибки при защите сайта от ботов
- Капча на всём сайте — снижает конверсию и может мешать роботам. Её место — формы, регистрация, вход, поиск.
- Блокировка по User-Agent как основная мера — строку подделать проще всего.
- Бан роботов Яндекса или Google подсетью или жёстким лимитом — проверяйте по обратному DNS до блокировки.
- Капча без серверной проверки токена — виджет есть, защиты нет.
- Лимиты без учёта прокси — реальные IP за CDN не настроены, лимит режет всех.
- Разовая настройка — боты меняют тактику, нужен регулярный просмотр логов и отчётов.
Чек-лист: как защитить сайт от ботов
- В Метрике просмотрены отчёт «Роботы» и роботность по источникам
- Из логов выгружены топ IP и User-Agent, подозрительные адреса проверены через whois и обратный DNS
- Формы защищены honeypot, токеном и лимитом отправок; SmartCaptcha проверяется на сервере
- Подтверждение телефона ограничено по номеру, IP и странам
- В админке включена двухфакторная авторизация, доступ ограничен по IP или VPN, работает fail2ban
- В nginx настроен limit_req, реальные IP за CDN определяются корректно
- Поисковые роботы не блокируются: проверено по Вебмастеру и логам
- В Директе регулярно проверяются площадки РСЯ и отчёт «Недействительный трафик»
- В политике обработки ПДн указан сбор технических данных для безопасности
Полностью избавиться от ботов невозможно и не нужно. Рабочая защита строится слоями, а начинать стоит не с покупки сервиса, а с диагностики: Метрика и логи за день покажут, какие боты приходят именно к вам.
