Защита от ботов: как отбиться от накрутки и не заблокировать Яндекс

Однажды утром вы открываете Метрику и видите всплеск: посещаемость выросла втрое. Радость длится минуту — до момента, когда взгляд падает на показатель отказов. Он 96%. Время на сайте — семь секунд. География — города, где у вас нет ни одного клиента. Это боты. Через две-три недели такого «трафика» позиции по коммерческим запросам начинают сползать, потому что поисковая система видит: люди заходят на сайт и мгновенно уходят.
Дальше начинается вторая часть проблемы. Владелец идёт к хостеру или ставит защитный модуль, включает жёсткую фильтрацию — и через неделю обнаруживает, что из индекса выпала половина страниц. Потому что вместе с ботами заблокировали робота Яндекса. Задача, таким образом, двойная: отсечь мусорный и вредоносный трафик, не задев поисковые системы. Разберём, как это делается на практике.
Какие боты приходят на сайт
Слово «бот» объединяет очень разные вещи, и реагировать на них нужно по-разному. Смешивать их — главная причина неудачных блокировок.
| Тип | Что делает | Вред | Что делать |
|---|---|---|---|
| Поисковые роботы YandexBot, Googlebot |
Обходят и индексируют сайт | Нет — это основа трафика | Пропускать всегда |
| Роботы сервисов метрики, мониторинг, соцсети |
Проверяют доступность, тянут превью | Минимальный | Пропускать нужные |
| Парсеры конкурентов | Скачивают цены, тексты, каталог | Нагрузка, воровство контента | Ограничивать по частоте |
| SEO-краулеры сторонние сервисы анализа |
Обходят сайт целиком | Нагрузка | Ограничивать или блокировать |
| Накрутка поведенческих | Имитируют посетителей, портят метрики | Высокий: падение позиций | Блокировать жёстко |
| Спам-боты | Заполняют формы, комментарии | Мусор в заявках, спам в базе | Фильтровать на уровне форм |
| Сканеры уязвимостей | Перебирают админки, ищут дыры | Угроза взлома | Блокировать |
Наибольший ущерб SEO наносит пятая строка. Механика простая: сайт получает поток «посетителей», которые заходят и сразу уходят. Поисковая система интерпретирует это как сигнал низкого качества — люди не находят на странице того, что искали. Позиции ползут вниз. Это одна из форм атаки, которую подробно разбирает материал про негативное SEO, а механика самих поведенческих сигналов — в статье про поведенческие факторы.
Как понять, что у вас боты
Диагностика начинается с Метрики. Признаки, которые вместе не оставляют сомнений:
- Резкий рост визитов без внешней причины — не было ни рекламы, ни публикации, ни сезона.
- Отказы 85–100% в сегменте роста при нормальных 20–40% в остальном трафике.
- Время на сайте меньше 10 секунд и ровно одна просмотренная страница.
- Странная география: города, где вы не работаете, или зарубежные страны при локальном бизнесе.
- Однотипные технические параметры: одинаковое разрешение экрана, одна версия браузера, одна операционная система у сотен визитов.
- Заходы ровными интервалами — каждые 5 или 15 минут, включая ночь.
- Одинаковые страницы входа: весь поток идёт на одну-две страницы.
В Метрике есть встроенный фильтр «Роботность» — начните с него, но не останавливайтесь: продвинутые боты его обходят. Более надёжный способ — построить отчёт по IP-адресам и посмотреть распределение по подсетям. Если сотни визитов приходят из нескольких соседних диапазонов вида 45.132.х.х, это ботнет, а не аудитория.
Второй источник данных — логи сервера. Они честнее Метрики, потому что фиксируют абсолютно все обращения, включая те, где не отработал счётчик. Как их читать, разобрано в материале про анализ логов сервера. Именно там видно частоту запросов с одного адреса — главный признак автоматики.
Главное правило: как отличить робота Яндекса от подделки
Здесь допускают критическую ошибку. User-agent — строка, которой клиент представляется серверу, — подделывается элементарно. Любой парсер может назваться YandexBot. Поэтому нельзя строить правила по принципу «пропускать всех, кто назвался Яндексом»: так вы откроете дверь ровно тем, кого хотели остановить.
Настоящая проверка — обратный DNS-запрос. Алгоритм такой:
- Берём IP-адрес, с которого пришёл запрос.
- Делаем обратный DNS-запрос и получаем имя хоста.
- Для настоящего робота Яндекса имя заканчивается на
.yandex.ru,.yandex.netили.yandex.com. Для Google — на.googlebot.comили.google.com. - Делаем прямой DNS-запрос по полученному имени и убеждаемся, что он возвращает исходный IP.
Только совпадение в обе стороны подтверждает подлинность. Проверить конкретный адрес можно и вручную:
host 5.255.253.1
# 1.253.255.5.in-addr.arpa domain name pointer 5-255-253-1.spider.yandex.com
host 5-255-253-1.spider.yandex.com
# 5-255-253-1.spider.yandex.com has address 5.255.253.1
Обе проверки сошлись — робот настоящий. Большинство серьёзных защитных систем умеют делать такую верификацию автоматически, и её обязательно нужно включить.
Уровни защиты: от простого к сложному
Защита строится слоями. Начинать стоит с самого лёгкого уровня, а тяжёлую артиллерию подключать, только если не помогло.
| Уровень | Инструмент | Против кого | Риск задеть Яндекс |
|---|---|---|---|
| 1 | robots.txt с Crawl-delay для сторонних краулеров | Вежливые парсеры | Нет |
| 2 | Ограничение частоты запросов (rate limiting) | Агрессивные парсеры | Низкий при верном пороге |
| 3 | Блокировка по подсетям в .htaccess или nginx | Известные ботнеты | Средний при ошибке в диапазоне |
| 4 | Фильтрация по поведению на стороне сервера | Накрутка ПФ | Средний |
| 5 | Внешний сервис защиты / WAF | Всё сразу | Высокий при агрессивных настройках |
| 6 | Капча на входе | Всё сразу | Критический — не применять массово |
Шестой уровень вынесен отдельно как предупреждение. Капча, показанная поисковому роботу, означает, что вместо страницы он получает проверочную форму. Несколько дней в таком режиме — и сайт выпадает из индекса. Если внешний сервис защиты включает «режим под атакой», убедитесь, что для проверенных поисковых роботов сделано исключение.
Практика: блокировка подсетей
Самый частый рабочий сценарий против накрутки — блокировка диапазонов, с которых идёт атака. Порядок действий:
- Соберите IP из логов за период атаки, отсортируйте по числу запросов.
- Определите принадлежность адресов: по whois видно владельца диапазона. Как правило, ботнеты сидят на хостингах и в дата-центрах, а не у домашних провайдеров.
- Свернитe адреса в подсети: если из
45.132.11.хидут запросы с двадцати разных адресов, блокируйте диапазон целиком. - Обязательно проверьте, что среди них нет адресов Яндекса и Google — методом обратного DNS.
- Внесите правила на уровне веб-сервера — это дешевле по ресурсам, чем фильтрация в PHP.
- Проверьте доступность сайта для робота через инструмент «Проверка ответа сервера» в Вебмастере.
Пример правил для Apache в файле .htaccess:
<RequireAll>
Require all granted
Require not ip 45.132.11
Require not ip 185.220.101
</RequireAll>
Важная эксплуатационная деталь: правила в .htaccess слетают при перезаписи файла — например, когда панель управления или CMS обновляет настройки. Проверяйте раз в неделю, что блокировка на месте, а лучше выносите правила в конфигурацию nginx, куда панель не лезет.
Защита форм от спама
Отдельный фронт — заявки. Здесь задача проще, потому что поисковые роботы формы не отправляют, и можно действовать смелее.
- Honeypot. Скрытое CSS-ом поле, которое человек не видит и не заполняет, а бот заполняет всегда. Если поле не пустое — заявка отбрасывается. Бесплатно, невидимо для пользователя, отсекает большинство простых ботов.
- Проверка времени заполнения. Человек не отправит форму за полсекунды после загрузки. Ставьте порог 3–4 секунды.
- Токен формы. Одноразовый ключ, выдаваемый при отрисовке страницы, — отсекает отправку напрямую в обработчик.
- Ограничение по частоте. Не больше 2–3 отправок с одного адреса за час.
- Капча — последним средством. Она снижает конверсию и утяжеляет страницу. Ставить её стоит, только если предыдущие меры не справились.
Последний пункт — не абстрактный совет. Скрипты капчи тянут за собой сотни килобайт стороннего кода и заметно ухудшают показатели загрузки, а те влияют на ранжирование. Взаимосвязь разобрана в материале про скорость сайта и Core Web Vitals.
Что делать, если позиции уже просели
Блокировка останавливает атаку, но не откатывает её последствия. Восстановление идёт по такому плану:
| Шаг | Действие | Срок |
|---|---|---|
| 1 | Перекрыть источник: блокировка подсетей, проверка эффекта по логам | 1–2 дня |
| 2 | Убедиться, что робот Яндекса ходит свободно (статистика обхода в Вебмастере) | Сразу после шага 1 |
| 3 | Настроить фильтр в Метрике, чтобы отделить чистые данные от загрязнённых | 1 день |
| 4 | Проверить диагностику в Вебмастере на предмет реальных нарушений | 1 день |
| 5 | Работать над реальным качеством: скорость, тексты, коммерческие факторы | Постоянно |
| 6 | Ждать пересчёта поведенческих метрик | 1–3 месяца |
Шестой шаг самый неприятный: поведенческие сигналы усредняются за длительный период, и мгновенного отскока не будет даже после полного прекращения атаки. Терпение здесь — часть стратегии. Смежная тема — накрутка поведенческих факторов и почему ей не стоит отвечать тем же.
Чего делать категорически нельзя
- Блокировать по User-agent «на всякий случай». Легко закрыть настоящего робота и пропустить поддельного.
- Включать «режим под атакой» надолго. Проверочная страница вместо контента = выпадение из индекса.
- Закрывать весь сайт от зарубежных IP. Часть инфраструктуры поисковых систем и сервисов находится за пределами РФ.
- Отвечать накруткой на накрутку. Это прямой путь под санкции, причём вашего сайта, а не конкурента.
- Ставить капчу на все страницы. См. выше — сайт исчезнет из поиска.
- Игнорировать проблему. Атака сама не заканчивается, а поведенческие метрики портятся накопительно.
Регулярный контроль
Защита — не разовая настройка, а процесс. Минимальный набор регулярных проверок:
- Еженедельно: график визитов в Метрике на предмет аномалий; статистика обхода в Вебмастере — робот ходит в обычном режиме?
- Ежемесячно: топ-20 IP по числу запросов из логов; проверка, что правила блокировки на месте.
- Ежеквартально: ревизия списка заблокированных подсетей — ботнеты мигрируют, старые правила устаревают и могут блокировать уже живых людей.
- После любого обновления CMS или панели: проверка, что защитные правила не затёрлись.
Контроль индексации при этом ведётся по числу страниц в поиске: если после введения защиты оно начало падать — вы задели робота, правила надо ослаблять. Настройка отчётов для такого мониторинга разобрана в материале про Яндекс.Метрику для SEO.
Вывод
Защита от ботов — это балансировка, а не переключатель «включить/выключить». Слишком мягкие настройки не останавливают накрутку, слишком жёсткие выносят сайт из индекса, и второй вариант обходится дороже первого. Ключ к правильному балансу — верификация поисковых роботов через обратный DNS: она позволяет закручивать гайки для всех остальных, не рискуя органическим трафиком.
Практический порядок такой: сначала диагностика по логам и Метрике, затем точечная блокировка подсетей, откуда идёт атака, обязательная проверка доступности для робота Яндекса и дальше — регулярный контроль, потому что и ботнеты, и конфигурации сервера имеют свойство меняться.
Мы неоднократно разбирали такие ситуации: находили источники атаки по логам, снимали нагрузку, восстанавливали индексацию после неудачных блокировок и вытягивали позиции обратно. Если вы видите у себя похожую картину — резкий рост визитов с отказами под 100% и падение позиций, — напишите нам через контакты. Разберём ваши логи, покажем, откуда идёт трафик, и настроим защиту так, чтобы Яндекс продолжал ходить свободно. Наши результаты по восстановлению трафика — в разделе кейсы, а сама работа входит в внутреннюю оптимизацию сайта.
Закажите SEO-продвижение в SEO ПРОГРЕСС
20 лет опыта, 250+ успешных кейсов. Бесплатный аудит и консультация.
Получить консультациюКомментарии
Андрей Логинов
Ровно наша ситуация: трафик вырос втрое, отказы 96%, позиции вниз. Полгода искали причину не там.
Виктория
Про проверку через обратный DNS — не знала, что user-agent так легко подделать. Думала, достаточно проверить название.
Семён
Включили «режим под атакой» у провайдера защиты. Через десять дней выпали из индекса наполовину. Восстанавливались два месяца.
Admin
К сожалению, распространённый сценарий. Проверочная страница вместо контента для робота равносильна недоступности сайта. Если провайдер защиты предлагает такой режим, обязательно вносите проверенных поисковых роботов в исключения — с верификацией по обратному DNS, а не по user-agent.
Марина Дьякова
Скажите, а как отличить накрутку от обычного всплеска после публикации у блогера?
Admin
Смотрите на набор признаков вместе: у живого трафика от блогера будет разная география, разные устройства и нормальное время на сайте, плюс он затухает за несколько дней. У накрутки — узкие диапазоны IP, одинаковые технические параметры, ровные интервалы заходов и отказы под 100% при стабильном объёме неделями.
Илья
Правила в .htaccess у нас слетали после каждого обновления панели. Перенесли в конфиг nginx — держатся.
Admin
Правильно сделали. Панели управления перезаписывают .htaccess при изменении настроек сайта, и правила молча исчезают. Конфигурация nginx в отдельном подключаемом файле — надёжнее, панель туда не лезет.
Алёна Т.
Honeypot поставили вместо капчи. Спам упал почти до нуля, а конверсия формы выросла на 12%.
Георгий
Таблица уровней защиты с колонкой «риск задеть Яндекс» — то, чего нигде не встречал. Обычно советуют «поставьте защиту» без нюансов.
Лариса Фомина
После блокировки подсетей позиции вернулись через сколько примерно?
Admin
Мгновенного отскока не будет: поведенческие метрики усредняются за длительный период, поэтому восстановление обычно занимает от одного до трёх месяцев после полного прекращения атаки. Параллельно стоит работать над реальным качеством страниц — это ускоряет процесс.
Вадим
Собрал топ-20 IP из логов. 17 из них — один хостинг-провайдер, соседние подсети. Всё сходится.
Admin
Похоже на типичную картину ботнета. Блокируйте диапазонами, а не отдельными адресами — иначе через неделю появятся соседние IP из той же подсети. И обязательно прогоните список через проверку на принадлежность поисковым системам перед внесением правил.
Ева Романова
Про регулярную ревизию списка блокировок хорошая мысль. У нас правила трёхлетней давности, наверняка часть уже блокирует живых людей.
Никита
Проверил через инструмент в Вебмастере после блокировки — робот получает 200. Успокоился.
Оставить комментарий