Проверка User-Agent — один из самых простых и надёжных stateless-сигналов для скоринга. Большинство скрейперов используют дефолтный UA своей HTTP-библиотеки.
Дефолтные UA скрейперов (блокировать)
| User-Agent | Библиотека |
|---|---|
python-requests/2.x | Python Requests |
Python-urllib/3.x | Python urllib |
Go-http-client/1.1 / 2.0 | Go net/http |
Scrapy/2.x | Scrapy |
axios/1.x | Axios (server-side Node.js) |
node-fetch/1.0 | node-fetch |
Java/1.x / Apache-HttpClient/4.x | Java HTTP clients |
HttpClient | .NET HttpClient |
Dart/3.x | Dart HTTP |
libwww-perl/6.x | Perl LWP |
Mechanize | Mechanize |
PhantomJS | PhantomJS (headless) |
HeadlessChrome | Puppeteer без стелса |
НЕ блокировать (легитимные)
| User-Agent | Почему легитимный |
|---|---|
Googlebot | Поисковик, индексация |
YandexBot | Поисковик |
bingbot | Поисковик |
Applebot | Apple поиск |
Telegrambot | Превью ссылок в Telegram |
vkShare | Превью ссылок ВКонтакте |
facebookexternalhit | Превью ссылок Facebook |
curl / wget | Разработчики, мониторинг, дебаг |
curl и wget
Не блокировать — разработчики и мониторинг используют их легитимно. Вместо блокировки — повышать suspicion score. Массовый скрейпинг через curl ловится rate-сигналами.
False positive risk
- Блокировка дефолтных bot UA (python-requests, Go-http-client) на браузерных эндпоинтах → очень низкий FP risk
- Блокировка на API с token-auth → высокий FP risk (легитимные интеграции)
- Пустой UA → очень низкий FP risk (даже privacy-браузеры шлют UA)
Обход
Продвинутые скрейперы подделывают UA под Chrome/Firefox. Поэтому UA-проверка — только один из сигналов, комбинировать с Sec-Fetch заголовками и HMAC.
Связанные заметки
- Блокировка AI-краулеров — GPTBot, ClaudeBot и др.
- Поведенческий анализ трафика — полная система скоринга