Ротация User-Agent вместе с прокси
User-Agent — один из oldest signals в HTTP, но антибот-системы 2026 года смотрят на связку UA + IP + TLS fingerprint + поведение. Менять только прокси, оставляя default python-requests UA — половина работы. Менять UA каждый запрос на одном IP — другой крайность, палящий random bot. Ротация User-Agent вместе с прокси — это согласованная стратегия: realistic headers, sticky sessions где нужно, смена пары IP+UA когда session завершена.
Что такое User-Agent и зачем его крутить
UA строка идентифицирует клиент: браузер, версия, OS. Сервер может отдать mobile layout или отказать известным library strings. При парсинге и автоматизации кастомный UA снижает мгновенный 403 от простых WAF rules. При load test разнообразие UA имитирует heterogeneous clients — см. нагрузочное тестирование.
Ротация не означает «случайный мусор из 1995». Используйте актуальные Chrome, Firefox, Safari strings matching market share; outdated UA хуже, чем honest library default.
Связка с прокси: правила согласованности
Sticky session — один IP + один UA на cookie-jar lifecycle (login → cart → checkout). SMM аккаунт — один UA месяцами на том же IPv4 — см. Instagram.
Rotate pair — каждый новый IP из pool NEONPROXY получает следующий UA из weighted list. Подходит для stateless GET parsing.
Geo match — mobile UA с DE IP; не ставьте Android UA с desktop-heavy Accept header. Accept-Language согласуйте с гео прокси.
Sec-CH-UA Client Hints в Chromium дублируют UA; подделывайте комплект или используйте real browser через Playwright.
Источники UA-списков
Публичные JSON lists обновляйте ежемесячно. Генераторы «random UA» часто выдают impossible combinations (Safari on Linux). Лучше curated pool 20–50 strings, rotate round-robin. Для headless — playwright devices preset (iPhone 14, Pixel 7).
Не reuse одного UA на тысячах IP одновременно — anti-bot cluster rule. Distribute unique pairs.
Реализация в коде
Python requests: headers={'User-Agent': ua} + proxies dict; middleware в Scrapy rotates on download slot. Node axios: interceptor picks ua per request when proxy changes. Go: custom Transport with RoundTripper wrapping proxy dialer.
Central config: PROXY_URL, UA_LIST path, strategy sticky|rotate. Log pair hash для debug без logging full credentials. Примеры HTTP — requests и прокси.
NEONPROXY API rotation endpoint + local UA index — sync by request id.
Fingerprint beyond UA
TLS JA3, HTTP/2 settings, header order — Cloudflare bot score. Pure UA swap недостаточен против enterprise WAF. Mitigation: real browser automation, curl-impersonate, или снизить rate. Тест анонимности показывает leaky headers (Via, X-Forwarded-For) — уберите их на стороне клиента.
Canvas/WebGL — только browser; requests не эмулирует.
Ротация IP без UA и наоборот
Только IP rotation — OK для API с token auth, UA вторичен. Только UA rotation на одном IP — слабая защита при rate limit per IP. Optimal для open web scraping: both, plus delay jitter.
Для SERP — desktop UA stable per IP day, mobile отдельный pool.
Типичные ошибки
curl/7.54.0 UA на «Chrome 120». Rotate UA mid-session on ecommerce. Conflicting Sec-Fetch-* for declared browser. 1000 req/s один UA — obvious bot. Ignore robots and ToS — legal risk не связан с UA quality.
Shared proxy + random UA + credential login — cascade ban; use private IP.
Чеклист
Curated UA list, updated. Strategy documented per project. Geo-language-UA aligned. Sticky where stateful. Pair rotation where stateless. Monitor 403 rate after UA change rollout. Preflight proxy via чекер.
NEONPROXY даёт стабильный IP layer — UA layer остаётся вашей ответственностью; вместе они закрывают базовый anti-bot tier для легального парсинга и QA.
Ведите changelog UA-pool: когда Chrome выпускает major version, обновите строки в течение недели — устаревший UA на свежем IP иногда выглядит подозрительнее, чем honest library default. A/B на staging: неделя без ротации UA vs неделя с rotate pair — сравните 403 rate перед rollout на production scraper.