Что такое идентификация по TLS-отпечаткам?
Идентификация по отпечаткам TLS представляет собой метод пассивной идентификации, который анализирует структуру TLS-рукопожатия клиента до начала обмена данными по протоколу HTTP. Сообщение ClientHello, которое каждый клиент, поддерживающий протокол TLS, отправляет для установления безопасного соединения, раскрывает в открытом виде поддерживаемую версию TLS, упорядоченный список наборов шифров, расширения и предпочтения в отношении эллиптических кривых (Fingerprint.com — Идентификация по TLS-хаши, 2024). Поскольку эти параметры отражают используемый библиотечный стек или стек браузера, сервер может отличить настоящий браузер от автоматизированного клиента, не просматривая ни одного заголовка запроса.
Как работает идентификация по отпечаткам TLS?
Когда клиент устанавливает соединение TLS, он отправляет пакет ClientHello до начала передачи каких-либо прикладных данных. Этот пакет содержит несколько упорядоченных списков: наборы шифров, поддерживаемые клиентом; расширения, которые он объявляет; группы эллиптических кривых, которым он отдаёт предпочтение; а также максимальную версию TLS, которую он принимает. Сервер или сетевой наблюдатель фиксирует эти поля и преобразует их с помощью хэширования в компактный идентификатор.
JA3 (MD5) и более новый формат JA4+ (SHA-256) представляют собой два стандартизированных формата для представления данного рукопожатия в виде одного хэша (FoxIO-LLC JA4, 2025). Многие фреймворки для ботов и библиотеки HTTP-скриптов используют одинаковые настройки TLS, поэтому несоответствующий или нехарактерный для браузера процесс установления соединения является надёжным сигналом для обнаружения, даже если IP-адрес и строка user-agent выглядят достоверно.
Настоящий браузер Chrome в системе Windows генерирует уникальный хеш JA3/JA4+. Программа на языке Python requests вызов, Node.js https Модуль или экземпляр браузера без графического интерфейса по умолчанию могут генерировать разные, но распознаваемые хэши. Системы обнаружения сравнивают входящий хэш с профилями известных браузеров и выявляют несоответствия на ранних этапах обработки запроса.
Случаи использования
Обнаружение ботов и предотвращение мошенничества. Системы безопасности используют несоответствия отпечатков TLS в качестве раннего сигнала, зачастую ещё до проверки файлов cookie, заголовков или поведенческих моделей. Соединение, которое утверждает, что оно принадлежит Chrome, но при этом использует протокол установления соединения TLS, не характерный для Chrome, немедленно вызывает подозрение.
Сбор данных и извлечение информации. Автоматизированные клиенты, которые меняют IP-адреса или строки пользовательского агента, по-прежнему можно идентифицировать, если их TLS-отпечаток остается неизменным во всех запросах. Конвейеры, которым требуется доступ к сайтам с активными средствами защиты от ботов, должны предоставлять TLS-подписи, соответствующие браузеру, за который они себя выдают.
Анализ прокси-серверов и трафика. Некоторые архитектуры прокси-серверов пропускают исходный TLS-рукопожатие клиента без изменений. Другие же осуществляют расторжение TLS-соединения и заново его инициируют с использованием собственного стека прокси-сервера, в результате чего формируется новый «отпечаток», который может отличаться от ожидаемого хеша подлинного браузера.
Отображение, как в реальном браузере. Web Render API от Massive направляет запросы через реальные экземпляры браузеров, поэтому TLS-рукопожатие, поступающее на целевой сервер, инициируется подлинным стеком браузера, а не скриптовым HTTP-клиентом, что позволяет получить аутентичный отпечаток браузера.
Часто задаваемые вопросы
Отпечаток TLS формируется на основе полей сообщения ClientHello: упорядоченного списка наборов шифров, расширений TLS и их значений, поддерживаемой версии TLS, а также настроек, касающихся эллиптических кривых. Эти поля передаются в открытом виде до начала шифрования, что позволяет их проанализировать без расшифровки полезных данных (Fingerprint.com — Идентификация по TLS-хаши, 2024 г.).
JA3 и JA4+ — это открытые стандарты, которые преобразуют поля TLS-рукопожатия в короткий идентификатор с помощью хеширования. В стандарте JA3 используется алгоритм MD5, а в JA4+ — SHA-256; кроме того, JA4+ включает больше полей, что обеспечивает более высокую степень детализации. Оба стандарта широко поддерживаются в инструментах сетевой безопасности и используются для корреляции трафика, поступающего из одного и того же клиентского стека (FoxIO-LLC JA4, 2025 г.).
Большинство библиотек для сбора данных используют конфигурацию TLS по умолчанию, заложенную в HTTP-библиотеке, на которой они основаны. Эта конфигурация отличается от конфигурации реального браузера, в результате чего формируется узнаваемый хеш. Системы обнаружения фиксируют это несоответствие и блокируют запрос или запрашивают дополнительную информацию, даже если IP-адрес и строка «user-agent» выглядят достоверными.
Да. Клиент может настроить порядок наборов шифров, список расширений и другие поля рукопожатия в соответствии с известным профилем браузера. Использование реального экземпляра браузера является наиболее надёжным подходом, поскольку процесс рукопожатия инициируется собственным стеком TLS браузера и естественным образом соответствует тому, что системы обнаружения ожидают от данного браузера.