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 прокси. Без минимальных платежей.
Начать