Как устроен стек web scraping
- Fetcher: HTTP-клиент или браузер получает страницу.
- Parser: извлекает DOM/JSON/structured data.
- Queue: хранит URL и retry.
- Identity: cookies, proxy, headers, browser profile.
- Storage: сохраняет результат.
- Scheduler: повторяет обход по расписанию.
Зачем scraper использует headless browser
Если контент формируется JavaScript, есть Challenge или данные требуют session state, scraper может перейти на Playwright/Selenium/Puppeteer-подобную автоматизацию. Она тяжелее и дороже, но даёт полноценный DOM и browser APIs.
Защитная система должна отличать прямые automation markers от generic anomalies. Нельзя честно объявлять конкретный инструмент, если обнаружен только общий WebDriver/headless признак.
Proxies и ротация идентичности
Распределённый scraper меняет IP и ASN, но иногда сохраняет одинаковый fingerprint, cookies, маршрут URL или тайминги. Корреляция этих факторов помогает увидеть одну автоматизированную популяцию за множеством адресов.
Corporate NAT, мобильные сети и VPN тоже создают IP rotation. Поэтому сетевой сигнал должен быть контекстом, а не самостоятельным BLOCK.
Что реально усложняет scraping
- rate limit по осмысленной единице — не только IP;
- закрытие дорогих/технических endpoints;
- verified crawler allow path;
- browser consistency/automation evidence;
- Challenge для подозрительных сессий;
- adaptive sequence/reputation;
- cache и архитектурное снижение стоимости запроса.
Какие метрики отслеживать
| Метрика | Что показывает |
|---|---|
| URLs/session | Ширину обхода |
| 404 ratio | Перебор/устаревшие URL |
| Requests/min | Интенсивность |
| Repeated sequences | Автоматизированный маршрут |
| IP/ASN rotation | Распределение сети |
| Challenge fail/pass | Реакцию на проверку |
| Browser marker confidence | Признаки automation runtime |
Web scraping в AntiPF
AntiPF сочетает URL/rule control с Browser Signals Lite, Network context, Adaptive sequences и Challenge. При этом поисковые crawler проверяются отдельно и не должны попадать под обычный scraper-risk.