Боты и парсеры: как чужие роботы жгут ресурсы вашего сайта
На типичный сайт значительная часть запросов приходит не от людей. Часть роботов полезна, часть безобидна, а часть тихо съедает мощности сервера, искажает аналитику и уносит ваш каталог к конкурентам. Разбираем, как их различать и что с ними делать.
Кто ходит на сайт кроме людей
| Кто | Зачем приходит | Как относиться |
|---|---|---|
| Поисковые роботы | Индексируют страницы | Пускать обязательно, управлять частотой обхода |
| Роботы сервисов и мониторинга | Проверяют доступность, собирают превью ссылок | Полезны, нагрузка ничтожная |
| Парсеры цен | Скачивают ваш каталог для сравнения или копирования | Ограничивать: нагрузка заметная, пользы нет |
| Сканеры уязвимостей | Перебирают адреса админок и известные дыры | Резать, следить за всплесками |
| Спам-боты | Заполняют формы обратной связи | Фильтровать на уровне форм |
| Кликеры по рекламе | Расходуют рекламный бюджет | Отслеживать через отчёты площадок |
Граница между полезными и вредными проходит не по слову «бот», а по соотношению пользы и нагрузки. Поисковый робот тоже создаёт трафик, но взамен приводит посетителей. Парсер цен не приносит ничего.
Чем вредят
Нагрузка на сервер. Парсер каталога обходит тысячи карточек подряд, без пауз и без кэша. На скромном хостинге это выливается в замедление для живых посетителей, а иногда и в упавший сайт — эффект тот же, что от небольшой атаки, только без злого умысла.
Искажённая аналитика. Часть роботов исполняет скрипты и попадает в отчёты как посетители. Растёт трафик, падает конверсия, портятся показатели отказов — и вы принимаете решения по цифрам, в которых людей меньше, чем кажется.
Утечка коммерческих данных. Ваш ассортимент, цены и остатки собираются автоматически и оказываются у конкурента, который выставляет цену на рубль ниже вашей. Каталог открыт для всех — в этом и смысл, — но скорость и полнота сбора превращают открытость в проблему.
Мусор в заявках. Отдел продаж тратит время на автоматические заявки, а нормальные обращения теряются в потоке.
Как отличить своих от чужих
Поле User-Agent, которым робот представляется, — это просто строка, и подделать её тривиально. Поэтому смотреть надо на поведение.
Живой посетитель загружает страницу вместе с картинками, стилями и скриптами, задерживается на ней, переходит по ссылкам непоследовательно. Парсер запрашивает только HTML, идёт по каталогу подряд, страница за страницей, с одинаковыми интервалами, и не трогает статические файлы. Эта разница хорошо видна в логах сервера.
Настоящих поисковых роботов можно проверить по адресу: у Яндекса и Google описана процедура сверки IP через обратный DNS-запрос. Если робот представляется поисковиком, а адрес не подтверждается — это чужак под чужим именем.
Что делать
Ограничить частоту запросов. Базовая и самая полезная мера: лимит на число обращений с одного адреса за промежуток времени. Живому человеку он незаметен, а массовый обход упирается в потолок.
Кэшировать страницы каталога. Если карточка отдаётся из кэша, обход тысячи страниц перестаёт быть проблемой: сервер не считает их заново.
Закрыть тяжёлые места. Внутренний поиск и страницы фильтров — самая дорогая часть сайта. Их разумно закрыть от роботов в robots.txt и ограничить отдельно, даже если остальной каталог открыт.
Защитить формы. Скрытое поле-ловушка, отсечка слишком быстрой отправки и капча при подозрении убирают основную массу спам-заявок без ущерба для живых пользователей.
Отфильтровать роботов в аналитике. В системах аналитики есть встроенная фильтрация известных ботов — её стоит включить, чтобы отчёты отражали людей.
Не рассчитывайте на robots.txt как на защиту: это рекомендация, которую соблюдают добросовестные роботы и игнорируют все остальные. И не блокируйте адреса списком вручную — они меняются быстрее, чем вы правите конфигурацию. Осторожнее с жёсткой блокировкой по признакам: под неё легко попадают поисковые роботы, и тогда сайт выпадает из индекса.
Побочный эффект защиты от ботов — можно случайно закрыть сайт и для полезных роботов, и для живых людей. Пруфен проверяет доступность страниц с интервалом от 2 минут из 13 точек и показывает время ответа: по графику видно и наплыв ботов, от которого сайт замедлился, и момент, когда новые правила фильтрации начали отдавать ошибку. Отдельная проверка следит за robots.txt. Уведомления приходят на Email, в Telegram, в Макс или звонком.
Частые вопросы
Можно ли полностью запретить парсинг? Нет. Всё, что видит браузер посетителя, технически доступно и программе. Реальная цель — сделать массовый сбор дорогим и медленным настолько, чтобы он потерял смысл, а не невозможным.
Не навредит ли ограничение частоты поисковикам? При разумных значениях нет: поисковые роботы обходят сайт умеренно и снижают темп при замедлении ответа. Опасны слишком жёсткие лимиты — тогда робот получает ошибки, и это уже бьёт по индексации.
Как понять, что нагрузку создают именно боты? Сравните нагрузку на сервер с посещаемостью в аналитике. Если сервер занят, а счётчик показывает обычные цифры, значит, запросы идут от тех, кто не исполняет скрипты. Дальше подтверждение ищите в логах.
Стоит ли ставить капчу на весь сайт? Нет, это отпугнёт живых посетителей и помешает индексации. Капча уместна точечно: на формах, на входе в личный кабинет, при подозрительной активности — но не как постоянный барьер перед каталогом.