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

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

Однажды утром вы открываете Метрику и видите всплеск: посещаемость выросла втрое. Радость длится минуту — до момента, когда взгляд падает на показатель отказов. Он 96%. Время на сайте — семь секунд. География — города, где у вас нет ни одного клиента. Это боты. Через две-три недели такого «трафика» позиции по коммерческим запросам начинают сползать, потому что поисковая система видит: люди заходят на сайт и мгновенно уходят.

Дальше начинается вторая часть проблемы. Владелец идёт к хостеру или ставит защитный модуль, включает жёсткую фильтрацию — и через неделю обнаруживает, что из индекса выпала половина страниц. Потому что вместе с ботами заблокировали робота Яндекса. Задача, таким образом, двойная: отсечь мусорный и вредоносный трафик, не задев поисковые системы. Разберём, как это делается на практике.

Какие боты приходят на сайт

Слово «бот» объединяет очень разные вещи, и реагировать на них нужно по-разному. Смешивать их — главная причина неудачных блокировок.

ТипЧто делаетВредЧто делать
Поисковые роботы
YandexBot, Googlebot
Обходят и индексируют сайт Нет — это основа трафика Пропускать всегда
Роботы сервисов
метрики, мониторинг, соцсети
Проверяют доступность, тянут превью Минимальный Пропускать нужные
Парсеры конкурентов Скачивают цены, тексты, каталог Нагрузка, воровство контента Ограничивать по частоте
SEO-краулеры
сторонние сервисы анализа
Обходят сайт целиком Нагрузка Ограничивать или блокировать
Накрутка поведенческих Имитируют посетителей, портят метрики Высокий: падение позиций Блокировать жёстко
Спам-боты Заполняют формы, комментарии Мусор в заявках, спам в базе Фильтровать на уровне форм
Сканеры уязвимостей Перебирают админки, ищут дыры Угроза взлома Блокировать

Наибольший ущерб SEO наносит пятая строка. Механика простая: сайт получает поток «посетителей», которые заходят и сразу уходят. Поисковая система интерпретирует это как сигнал низкого качества — люди не находят на странице того, что искали. Позиции ползут вниз. Это одна из форм атаки, которую подробно разбирает материал про негативное SEO, а механика самих поведенческих сигналов — в статье про поведенческие факторы.

Как понять, что у вас боты

Диагностика начинается с Метрики. Признаки, которые вместе не оставляют сомнений:

  • Резкий рост визитов без внешней причины — не было ни рекламы, ни публикации, ни сезона.
  • Отказы 85–100% в сегменте роста при нормальных 20–40% в остальном трафике.
  • Время на сайте меньше 10 секунд и ровно одна просмотренная страница.
  • Странная география: города, где вы не работаете, или зарубежные страны при локальном бизнесе.
  • Однотипные технические параметры: одинаковое разрешение экрана, одна версия браузера, одна операционная система у сотен визитов.
  • Заходы ровными интервалами — каждые 5 или 15 минут, включая ночь.
  • Одинаковые страницы входа: весь поток идёт на одну-две страницы.

В Метрике есть встроенный фильтр «Роботность» — начните с него, но не останавливайтесь: продвинутые боты его обходят. Более надёжный способ — построить отчёт по IP-адресам и посмотреть распределение по подсетям. Если сотни визитов приходят из нескольких соседних диапазонов вида 45.132.х.х, это ботнет, а не аудитория.

Второй источник данных — логи сервера. Они честнее Метрики, потому что фиксируют абсолютно все обращения, включая те, где не отработал счётчик. Как их читать, разобрано в материале про анализ логов сервера. Именно там видно частоту запросов с одного адреса — главный признак автоматики.

Главное правило: как отличить робота Яндекса от подделки

Здесь допускают критическую ошибку. User-agent — строка, которой клиент представляется серверу, — подделывается элементарно. Любой парсер может назваться YandexBot. Поэтому нельзя строить правила по принципу «пропускать всех, кто назвался Яндексом»: так вы откроете дверь ровно тем, кого хотели остановить.

Настоящая проверка — обратный DNS-запрос. Алгоритм такой:

  1. Берём IP-адрес, с которого пришёл запрос.
  2. Делаем обратный DNS-запрос и получаем имя хоста.
  3. Для настоящего робота Яндекса имя заканчивается на .yandex.ru, .yandex.net или .yandex.com. Для Google — на .googlebot.com или .google.com.
  4. Делаем прямой 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 Капча на входе Всё сразу Критический — не применять массово

Шестой уровень вынесен отдельно как предупреждение. Капча, показанная поисковому роботу, означает, что вместо страницы он получает проверочную форму. Несколько дней в таком режиме — и сайт выпадает из индекса. Если внешний сервис защиты включает «режим под атакой», убедитесь, что для проверенных поисковых роботов сделано исключение.

Практика: блокировка подсетей

Самый частый рабочий сценарий против накрутки — блокировка диапазонов, с которых идёт атака. Порядок действий:

  1. Соберите IP из логов за период атаки, отсортируйте по числу запросов.
  2. Определите принадлежность адресов: по whois видно владельца диапазона. Как правило, ботнеты сидят на хостингах и в дата-центрах, а не у домашних провайдеров.
  3. Свернитe адреса в подсети: если из 45.132.11.х идут запросы с двадцати разных адресов, блокируйте диапазон целиком.
  4. Обязательно проверьте, что среди них нет адресов Яндекса и Google — методом обратного DNS.
  5. Внесите правила на уровне веб-сервера — это дешевле по ресурсам, чем фильтрация в PHP.
  6. Проверьте доступность сайта для робота через инструмент «Проверка ответа сервера» в Вебмастере.

Пример правил для 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. Часть инфраструктуры поисковых систем и сервисов находится за пределами РФ.
  • Отвечать накруткой на накрутку. Это прямой путь под санкции, причём вашего сайта, а не конкурента.
  • Ставить капчу на все страницы. См. выше — сайт исчезнет из поиска.
  • Игнорировать проблему. Атака сама не заканчивается, а поведенческие метрики портятся накопительно.

Регулярный контроль

Защита — не разовая настройка, а процесс. Минимальный набор регулярных проверок:

  1. Еженедельно: график визитов в Метрике на предмет аномалий; статистика обхода в Вебмастере — робот ходит в обычном режиме?
  2. Ежемесячно: топ-20 IP по числу запросов из логов; проверка, что правила блокировки на месте.
  3. Ежеквартально: ревизия списка заблокированных подсетей — ботнеты мигрируют, старые правила устаревают и могут блокировать уже живых людей.
  4. После любого обновления 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. Успокоился.

Оставить комментарий

Спасибо! Ваш комментарий отправлен на модерацию и появится после проверки.