Проверка User-Agent — один из самых простых и надёжных stateless-сигналов для скоринга. Большинство скрейперов используют дефолтный UA своей HTTP-библиотеки.

Дефолтные UA скрейперов (блокировать)

User-AgentБиблиотека
python-requests/2.xPython Requests
Python-urllib/3.xPython urllib
Go-http-client/1.1 / 2.0Go net/http
Scrapy/2.xScrapy
axios/1.xAxios (server-side Node.js)
node-fetch/1.0node-fetch
Java/1.x / Apache-HttpClient/4.xJava HTTP clients
HttpClient.NET HttpClient
Dart/3.xDart HTTP
libwww-perl/6.xPerl LWP
MechanizeMechanize
PhantomJSPhantomJS (headless)
HeadlessChromePuppeteer без стелса

НЕ блокировать (легитимные)

User-AgentПочему легитимный
GooglebotПоисковик, индексация
YandexBotПоисковик
bingbotПоисковик
ApplebotApple поиск
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.

Связанные заметки