Что такое отпечаток пальца JA3 / JA4?
A Отпечаток пальца JA3 / JA4 представляет собой короткий хеш, полученный в результате установления соединения TLS-клиента, который позволяет определить, какая библиотека TLS, браузер или бот установил соединение, без использования IP-адреса. JA3 был введён компанией Salesforce в 2017 году с использованием алгоритма MD5; JA4 — это современный преемник FoxIO, использующий алгоритм SHA-256 и сортирующий поля ввода для предотвращения обхода защиты. Системы защиты от ботов, платформы по борьбе с мошенничеством и системы контроля доступа используют эти хэши для выявления подозрительных клиентов на уровне протокола.
Как работают отпечатки пальцев в JA3 и JA4
JA3 объединяет пять полей из сообщения TLS ClientHello: версию TLS, наборы шифров, расширения, эллиптические кривые и форматы точек EC, а затем вычисляет их MD5-хэш, преобразуя его в строку длиной 32 символа (Fingerprint.com — Идентификация по TLS-хаши, 2024). Каждый клиент, отправляющий одну и ту же комбинацию, независимо от IP-адреса, генерирует одинаковый хеш. Такая стабильность позволяет системам безопасности группировать трафик по типу клиента, а не по источнику.
JA4 устраняет основной недостаток JA3: порядок расширений. Клиенты могли менять порядок расширений TLS, чтобы сгенерировать другой хеш JA3, при этом предоставляя идентичные возможности. JA4 сортирует наборы шифров и расширения перед хешированием, устраняя этот способ обхода. Результатом является строка, состоящая из трёх частей (например, t13d1516h2_8daaf6152771_b186095e22b6), состоящий из префикса, понятного для человека, и двух усечённых хешей SHA-256 длиной 12 символов (Спецификация FoxIO-LLC JA4, 2025). JA4 также удаляет значения GREASE, которые браузеры вставляют для проверки совместимости и которые в противном случае создавали бы лишний шум.
Пакет FoxIO JA4+ расширяет эту концепцию за пределы протокола TLS. JA4H охватывает заголовки HTTP-запросов, JA4S — ответы TLS на стороне сервера, а JA4L анализирует динамику сетевой задержки. Комбинирование под-фингерпринтов значительно повышает точность обнаружения.
Случаи использования
Системы защиты от ботов используют хеши JA3/JA4 для выявления библиотек-скребберов (таких как библиотеки Python requests, httpx, или сборки Chromium без графического интерфейса), даже если эти клиенты меняют IP-адреса или подделывают строки «user-agent». IP-адрес частного пользователя в сочетании со стеком TLS на Python по-прежнему формирует распознаваемый отпечаток, не характерный для браузера.
Платформы контроля доступа объединяют данные уровней JA3/JA4 с другими сигналами (пользовательский агент, порядок фреймов HTTP/2, хеш canvas) для формирования комплексного профиля устройства. Несоответствие между заявленным браузером и отпечатком TLS является явным сигналом аномалии, требующим дополнительного расследования.
Исследователи в области безопасности и «красные команды» используют эти «отпечатки» в обратном направлении: сначала определяют, какую библиотеку TLS ожидает целевой сервер, а затем настраивают свой клиент в соответствии с этим. Такие инструменты, как curl-impersonate и utls Библиотека модифицирует стек TLS таким образом, чтобы обеспечить обмен данными, совместимый с Chrome.
При массовом доступе к сайтам через прокси-серверы, расположенные в жилых районах, «отпечаток» JA4 клиента по-прежнему должен соответствовать реальным браузерам, иначе преимущество, связанное с репутацией IP-адреса, теряется. Стандартной практикой является сочетание подлинных IP-адресов из жилых районов (таких как адреса в сети Massive) с TLS-соединением, точно соответствующим браузеру.
Часто задаваемые вопросы
Отпечаток JA3 представляет собой 32-символьный хеш MD5, сгенерированный на основе пяти полей TLS ClientHello (версия TLS, наборы шифров, расширения, эллиптические кривые, форматы точек EC), введенный компанией Salesforce в 2017 году (Fingerprint.com — Идентификация по TLS-хаши, 2024 г.). Это позволяет средствам сетевой безопасности определять библиотеку TLS клиента, не полагаясь на IP-адрес.
JA4 сортирует поля перед хешированием, что сводит на нет рандомизацию порядка расширений, и использует алгоритм SHA-256 вместо MD5. В результате получается удобочитаемый a_b_c строка, а не непрозрачный шестнадцатеричный хеш (Спецификация FoxIO-LLC JA4, 2025). JA4 также игнорирует значения GREASE, что обеспечивает большую стабильность отпечатков при обновлении браузеров.
Да. Такие библиотеки, как curl-impersonate и utls Внесите изменения в стек TLS, чтобы точно имитировать сообщение ClientHello целевого браузера. Системы защиты от ботов противодействуют этому, сочетая JA4 с дополнительными сигналами, такими как порядок фреймов HTTP/2, временные паттерны и отпечатки canvas, чтобы сформировать сложный для подделки композитный отпечаток.
Смена IP-адресов не изменяет TLS-отпечаток базового HTTP-клиента. Скрейпер, работающий с частного IP-адреса, но использующий стандартный стек TLS языка Python, по-прежнему будет соответствовать известному отпечатку бота. Для предотвращения обнаружения наряду со сменой IP-адресов необходима точная эмуляция TLS, аналогичная работе браузера.