TLS-отпечаток
TLS-отпечаток — набор параметров, которые программа отправляет в начале защищённого соединения; по нему сайт распознаёт тип клиента.
Обновлено · Редакция Prokso
Когда браузер или скрипт открывает сайт по HTTPS, сначала происходит рукопожатие TLS. Первое сообщение клиента называется ClientHello, и оно идёт в открытом виде. В нём программа перечисляет, что умеет: версии TLS, наборы шифров, расширения и их порядок, поддерживаемые кривые и протоколы.
Каждая библиотека формирует ClientHello по-своему. У Chrome, Firefox и Safari свои типичные наборы, а у библиотек для скриптов на Python, Go или Node.js — свои. Поэтому по этим параметрам сайт может понять, какая программа к нему обращается, даже не глядя на заголовки.
Чтобы сравнивать отпечатки было удобно, их превращают в короткую строку. Самые известные методы — JA3 и более новый JA4. JA3 берёт версию, шифры, расширения и кривые и считает из них хеш. JA4 дополнительно учитывает протокол и сортирует списки, потому что некоторые браузеры перемешивают порядок расширений при каждом соединении.
Прокси TLS-отпечаток не меняет. Для HTTPS программа отправляет прокси команду CONNECT, и дальше прокси только пересылает зашифрованные байты между вами и сайтом. Рукопожатие TLS идёт напрямую между вашей программой и сайтом, а прокси видит разве что имя сайта из поля SNI.
Из-за этого скрипт и настоящий браузер выглядят для сайта по-разному, даже если у них одинаковый IP и одинаковый User-Agent. Если заголовок говорит «Chrome», а ClientHello типичен для библиотеки Python, сайт видит это расхождение. То же касается headless-браузеров: их TLS-отпечаток обычно близок к обычному браузеру, но другие признаки могут отличаться.
TLS-отпечаток удобен для сайтов тем, что его трудно случайно изменить. Он зависит от версии библиотеки и её настроек, а не от того, какую страницу вы открываете или через какую сеть подключаетесь. Когда браузер обновляется, его отпечаток тоже может немного измениться, поэтому сайты обычно сравнивают его с известными значениями для текущих версий. Отдельные сервисы позволяют посмотреть собственный отпечаток и сравнить, как выглядят разные программы.
TLS-отпечаток — лишь одна часть более широкого отпечатка браузера. Сайты сочетают его с другими данными и сами решают, как на это реагировать. Прокси отвечает за IP-адрес, а параметры соединения зависят от программы, которой вы пользуетесь.
Вопросы и ответы
Меняет ли прокси TLS-отпечаток?
Нет. HTTPS-соединение через CONNECT зашифровано от вашей программы до сайта, поэтому сайт видит ClientHello вашей программы, а прокси только пересылает байты.
Что такое JA3 и JA4?
Это распространённые способы записать TLS-отпечаток короткой строкой. JA3 считает хеш из версии, шифров, расширений и кривых, а JA4 ещё и сортирует списки и учитывает протокол.
Связанные термины
Резидентские $1.59, мобильные $2.50, серверные $0.65 за 1 ГБ
Регистрация за минуту, доступы сразу после оплаты.