Парсинг · защита

Как защитить сайт от парсеров: практический план без вреда для SEO

Защита от парсеров начинается не с CAPTCHA на весь сайт, а с инвентаризации ценных URL и отделения легитимных роботов от неизвестного массового обхода.

Шаг 1. Определите, что именно защищаете

Каталог, цены, остатки, поиск, фильтры, контакты и API имеют разную ценность и стоимость запроса. Защита должна быть сильнее на маршрутах, которые scraper может эксплуатировать массово.

  • какие URL дают наиболее дорогую нагрузку;
  • что нельзя кэшировать;
  • какие страницы обязаны видеть поисковые роботы;
  • какие endpoints не должны быть публично индексируемыми.

Шаг 2. Снимите baseline по логам

До блокировок измерьте нормальные requests/min, URLs/session, долю 404, наиболее частые последовательности, IP/ASN distribution и verified crawler traffic. Это снижает риск принять пик обычной активности за атаку.

Шаг 3. Включайте защиту слоями

  1. Hard allow для подтверждённых crawler/служебных клиентов.
  2. Точные URL/rate rules для очевидных сценариев.
  3. Browser/network evidence как дополнительный risk.
  4. Sequence/reputation после накопления выборки.
  5. Challenge для подозрительных сессий.
  6. Block только там, где evidence и policy достаточно сильны.
  • robots.txt — policy для добросовестных crawler, но не security barrier;
  • anti-flood/rate limiting — scoped по дорогим routes, а не один глобальный порог;
  • cache/CDN — снижает стоимость повторного чтения публичных страниц;
  • Browser/automation evidence — полезно против headless и части anti-detect сценариев;
  • residential proxy/IP rotation требуют корреляции identity/behavior, а не IP-only ban;
  • AI crawlers и известные боты лучше регулировать отдельной crawler/policy логикой.

Шаг 4. Не создавайте SEO-проблему

Самая опасная ошибка — общий Challenge или rate limit, который не отличает поискового crawler. Второй риск — закрыть важные CSS/JS/resources, из-за чего crawler не сможет корректно отрендерить страницу.

Практика

После включения защиты проверяйте access logs, Search Console/Вебмастер, HTTP-коды ключевых URL и фактическую доступность для verified crawler.

Шаг 5. Снижайте экономику scraping

Абсолютно запретить получение публичных данных невозможно, но можно сделать массовый сбор дороже: ограничить скорость, потребовать устойчивую session identity, добавить Challenge на рискованные маршруты и убрать технические endpoints из публичного доступа.

Граница application-level защиты

TLS/JA3/JA4 fingerprinting и edge/network filtering находятся вне PHP-runtime AntiPF. Не стоит считать отсутствие этих сигналов недостатком конкретного правила: это другой слой архитектуры.

Как это связано с AntiPF

AntiPF как один из слоёв защиты

Для scraping AntiPF использует scoped Rule Engine, crawler verification, Browser/Network evidence, Adaptive sequences и Challenge. Shadow-first режим позволяет проверить логику до enforcement.

РешениеЗащита от парсеров →МодульRule Engine →МодульCrawler Verification →МодульChallenge Studio →
FAQ

Частые вопросы

Нужно ли ставить CAPTCHA на весь каталог?

Обычно нет. Лучше применять Challenge scoped, когда risk и контекст оправдывают вмешательство.

Стоит ли банить все datacenter IP?

Нет. Это создаёт false positives. Hosting/ASN лучше использовать как один из контекстных сигналов.

robots.txt остановит scraper?

Только добровольно соблюдающий его crawler. Для нежелательной автоматизации нужны технические меры.

Как понять, что защита не сломала SEO?

Проверять verified crawler access, HTTP-коды, логи обхода, Search Console/Яндекс Вебмастер и отсутствие неожиданных Challenge для crawler.

Следующий шаг

Нужно проверить трафик на реальном сайте?

Пришлите домен и симптомы. Разберём, какие данные уже есть в логах и аналитике, какие сигналы имеет смысл собирать и где защита даст практический эффект.