Реферальная программа →
Глоссарий

User-Agent

HTTP-заголовок, идентифицирующий браузер, версию и операционную систему, делающие запрос.

User-Agent - это строка, которую ваш клиент отправляет в HTTP-заголовке User-Agent, чтобы представиться: браузер, версия, движок рендеринга и операционная система. Реальный Chrome на Windows отправляет что-то вроде «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ... Chrome/120.0». Серверы читают его, чтобы решить, какой контент и форматирование вернуть.

Для скрапинга user-agent - частая точка обнаружения. HTTP-библиотеки по умолчанию отправляют очевидные ботовые user-agent (например, «python-requests/2.31»), которые антибот-системы флагуют мгновенно. Отправка реалистичного браузерного user-agent - базовое требование, чтобы не быть заблокированным сразу.

Помимо просто установки одного реалистичного значения, ротация user-agent между запросами помогает трафику выглядеть как множество разных пользователей. Но user-agent должен согласовываться с остальным запросом - заявлять, что вы Chrome, при отправке заголовков или TLS-отпечатка, которые Chrome никогда бы не отправил, - красный флаг, который продвинутые системы обнаруживают.

User-agent - один сигнал из многих. Сочетайте реалистичный, ротируемый user-agent с совпадающими заголовками Accept и Accept-Language, согласованным TLS-отпечатком и ротацией IP. Подмена одного лишь user-agent, когда всё остальное кричит «бот», далеко вас не уведёт против современных антибот-защит.

Строка, которая обязана согласовываться со всем остальным

Заголовок User-Agent это самоописание вашего браузера и операционной системы. Он правится элементарно, и поэтому ни одна серьёзная антибот-система ему в одиночку не верит. Вместо этого такие системы проверяют, согласуется ли он со всем, что они могут измерить самостоятельно.

Список независимых измерений длинный. Рукопожатие TLS даёт отпечаток, различающийся у Chrome, Firefox и библиотеки на Python. Порядок HTTP-заголовков у настоящих браузеров отличается от большинства инструментов автоматизации. JavaScript выдаёт размер экрана, платформу, список шрифтов, число ядер и графический рендерер. У самого стека TCP есть привкус операционной системы.

Запрос, объявляющий себя Chrome под Windows, но предъявляющий питоновский отпечаток TLS, отправляющий заголовки не в том порядке и сообщающий в JavaScript платформу Linux, браузером не является. Сайтам не нужно догадываться. Противоречие вычисляется арифметически.

Поэтому смена одного лишь User-Agent почти никогда не помогает, а иногда вредит: несовпадающая строка превращает последовательный автоматический клиент в непоследовательный, а это ровно тот шаблон, который системы обнаружения и созданы находить.

Где прокси встаёт в согласованность отпечатка

Адрес это один признак среди многих, и он обязан согласовываться с остальными. На мобильных модемах можно выровнять и сетевой стек:

Настроить отпечаток модема под профиль

# Supported values on our mobile modems:
android:1   android:3
ios:1       ios:2
macosx:3    macosx:4
windows:1

# An iPhone profile behind a modem announcing Windows
# contradicts itself before any script runs.
  • Приводите страну прокси в соответствие с локалью и часовым поясом профиля. Американский адрес с варшавским часовым поясом это противоречие, видное одной строкой JavaScript.
  • На мобильных задайте отпечаток ОС при создании профиля и не трогайте. Смена его потом выглядит так, будто устройство поменяли за ночь.
  • Пусть User-Agent генерирует ваш антидетект-браузер, а не вы руками. Написанные вручную строки устаревают и перестают совпадать с версией браузера за ними.
  • Прокси чинит адрес. Согласованность отпечатка это отдельная работа, и чтобы обе чего-то стоили, решать их надо вместе.

Что User-Agent сделает, а что нет

Смена не делает вас другим браузером

Всё измеримое остаётся прежним, и теперь оно расходится с вашим заявлением.

Мобильный User-Agent без мобильного адреса

Объявлять себя айфоном из датацентрового диапазона это противоречие, обнаружение которого не стоит ничего.

Заблокированный запрос редко упирается в строку

Большинство блокировок решается по репутации адреса и отпечатку TLS. Заголовок проверяют последним, а не первым.

Ротация User-Agent на каждый запрос

Настоящие браузеры свой сохраняют. Сессия, где браузер меняет личность каждый запрос, подозрительнее той, где он повторяется.

Смотри на практике

Готов использовать user-agent?

SotaProxy даёт доступ к ротирующим резидентским, мобильным, дата-центр и ISP прокси. Без минимальных платежей.

Начать