Back to blog. Article language: BN EN ES FR HI ID PT RU UR VI ZH

Отпечаток TLS и JA3: как это влияет на парсинг

TLS-фингерпринтинг определяет HTTP-клиент по структуре его TLS-рукопожатия ещё до передачи любых прикладных данных. JA3 и JA4 превращают поля сообщения ClientHello в короткий хеш, а антибот-системы сравнивают этот хеш с известными сигнатурами браузеров и ботов. Несоответствие между заявленным браузером и хешем может привести к отклонению запроса ещё до того, как будут прочитаны заголовки.

Легенда, используемая во всех таблицах ниже: ✅ задокументировано вендором · ❌ не предоставляется или не задокументировано · ⚠️ задокументировано с ограничениями · 💡 практический совет. Никакие другие обозначения на этой странице не используются.

Что такое TLS-отпечаток

TLS-отпечаток — это короткая сигнатура, построенная из полей, которые HTTP-клиент отправляет в сообщении client hello во время tls-рукопожатия, ещё до начала шифрования. Понимание того, что такое JA3, начинается именно здесь: JA3 считывает пять из этих полей и превращает их в единый хеш. Каждый клиент, будь то Chrome, curl или скрипт на Python, перечисляет наборы шифров, расширения и эллиптические кривые в собственном особом порядке. Серверы читают эти данные в открытом виде, поскольку стороны ещё не согласовали ключи шифрования.

Сообщение client hello также несёт расширение alpn, которое сообщает серверу, отдаёт ли соединение предпочтение HTTP/1.1 или HTTP/2. Разные библиотеки собирают эти поля по-разному в зависимости от базового TLS-стека, например OpenSSL, BoringSSL или NSS. Именно этот исходный материал служит основой для работы JA3 и JA4.

💡 Совет: если два запроса несут один и тот же отпечаток, но разные заявленные браузеры, одно лишь это несоответствие может вызвать подозрение без всяких манипуляций с заголовками.

Как вычисляются JA3 и JA4

Отпечаток JA3 вычисляется путём объединения пяти полей ClientHello в одну строку и хеширования её с помощью MD5, что даёт 32-символьную сигнатуру (Scrapfly, руководство по TLS-фингерпринтингу JA3/JA4, 2026). Джон Олтхаус, Джефф Аткинсон и Джош Аткинс опубликовали оригинальный метод в Salesforce в 2017 году, и он до сих пор составляет основу большинства TLS-проверок ботов. Пять полей, из которых строится этот хеш: версия TLS, наборы шифров, расширения, эллиптические кривые и форматы точек, соединённые в фиксированном порядке.

  1. Извлеките версию TLS, выраженную десятичным числом, например 771 для TLS 1.2.
  2. Перечислите наборы шифров строго в том порядке, в котором клиент их отправил, разделяя дефисами.
  3. Перечислите расширения TLS в порядке отправки, через дефис, пропуская значения GREASE.
  4. Добавьте поддерживаемые эллиптические кривые и форматы точек.
  5. Соедините все пять полей запятыми и захешируйте полученную строку с помощью MD5, чтобы получить хеш ja3.
Схема, показывающая, как хеш JA3 строится из полей ClientHello

Как строится хеш JA3 из ClientHello

Более новый метод обходит проблему упорядочивания из шага 3. Вместо записи расширений в порядке отправки он сортирует их по шестнадцатеричному значению, что сохраняет стабильность отпечатка JA4 даже после того, как браузеры начали рандомизировать порядок расширений в 2023 году (Scrapfly, 2026). Хеш-преемник также отказывается от MD5 в пользу усечённого SHA-256 и добавляет поддержку ALPN и QUIC — детали, которые JA3 никогда не фиксировал.

Критерий JA3 Метод-преемник
Алгоритм хеширования MD5 Усечённый SHA-256
Порядок расширений В порядке отправки Сортировка по шестнадцатеричному значению
Поддержка QUIC/HTTP3 ❌ не предоставляется ✅ задокументировано
Включён ALPN ❌ не предоставляется ✅ задокументировано
Создан 2017, Salesforce 2023, FoxIO

Эти структурные различия важны для каждого, кто тестирует собственный клиент. Отпечаток, вычисленный одним способом, не совпадёт с базой данных, построенной для другого метода.

Почему одни лишь прокси не решают проблему фингерпринтинга

Прокси меняют IP-адрес, с которого приходит запрос; они вовсе не касаются tls-рукопожатия, поэтому TLS-фингерпринтинг по-прежнему видит ту библиотеку, которая инициировала соединение. Рукопожатие происходит напрямую между клиентом и целевым сервером, а стандартный HTTPS-прокси, использующий метод CONNECT, просто туннелирует зашифрованные байты, не затрагивая их (Shifter, глоссарий TLS-отпечатков, 2026). Это значит, что чистый резидентный IP в паре с Python-клиентом с настройками по умолчанию всё равно передаёт отпечаток, который читается как скрипт, а не браузер.

В нашем тесте в августе 2026 года сеанс requests по умолчанию, маршрутизированный через три разных типа прокси, каждый раз возвращал одинаковый хеш независимо от репутации IP или географии. Только смена базовой TLS-библиотеки изменила результат. Это честная часть разговора: качество IP и совпадение отпечатков решают две разные задачи, и отношение к одной как к решению другой быстро приводит к разочарованию.

"TLS-фингерпринтинг происходит до того, как приземлится первый HTTP-байт. Замена IP-адреса ничего не делает с рукопожатием, лежащим в его основе." — технические заметки Insocks, август 2026

  • ❌ Резидентный IP не переписывает порядок наборов шифров.
  • ❌ Ротация прокси не затрагивает поля TLS-рукопожатия.
Схема, сравнивающая, что прокси меняет, а что оставляет нетронутым

Что меняет прокси и что он оставляет нетронутым

  • ✅ Именно соответствие TLS-стеку реального браузера действительно меняет отпечаток.

Как антибот-системы используют TLS-отпечатки

Антибот-системы вычисляют хеш из каждого входящего ClientHello и сверяют его с базами данных известных отпечатков браузеров и ботов, затем объединяют этот сигнал с другими слоями, прежде чем принять решение о блокировке, челлендже или пропуске. TLS-фингерпринтинг целиком находится под HTTP-заголовками, поэтому идеальные заголовки в сочетании со скриптовым TLS-стеком всё равно помечаются. Cloudflare документирует поля JA3 и JA4 внутри своего продукта bot management, а другие вендоры проводят сопоставимые проверки (Scrapfly, 2026). Скоринг смешивает TLS-сигналы с таймингом запросов, репутацией IP и поведенческими данными, а не полагается на одно лишь поле.

Некоторые вендоры добавляют http2-фингерпринтинг поверх проверки рукопожатия, анализируя, как клиент согласовывает приоритеты потоков и размеры окон после завершения TLS-слоя. Этот второй слой встраивается в более широкий скоринг anti bot detection наряду с хешем JA3 и JA4. Вендоры поддерживают эти базы данных в актуальном состоянии по мере выхода версий браузеров, и отпечаток, проходивший проверку в прошлом квартале, может начать сбоить после того, как обновление браузера изменит его настройки по умолчанию.

Сигнал Что выявляет Типовое действие
Несовпадение хеша JA3 с User-Agent Заявленный браузер не соответствует TLS-стеку ⚠️ задокументировано с ограничениями, часто челлендж
Статичный хеш между сеансами Один и тот же скрипт используется многократно ⚠️ задокументировано с ограничениями, рейт-лимитинг
Совпадение с базой известных ботов Отпечаток привязан к настройкам по умолчанию распространённой библиотеки ❌ не предоставляется, часто блокируется сразу
Согласованный браузероподобный профиль Соответствует ожидаемому поведению браузера ✅ задокументировано, обычно проходит

Согласованность между слоями: TLS, HTTP/2, заголовки и IP

Согласованность между слоями означает, что tls-рукопожатие, кадр настроек http2, заявленный User-Agent и тип сети IP должны указывать на одну и ту же историю — реальный браузер или реальный клиент, а не лоскутное одеяло из несогласованных сигналов. Http2-фингерпринтинг анализирует, как клиент согласовывает приоритеты потоков и размеры окон после завершения рукопожатия, и это второй слой, который некоторые антибот-вендоры проверяют наряду с данными JA3 и JA4 (Scrapfly, 2026). Скрапер, который наладил свой TLS-стек, но игнорирует настройки HTTP/2, всё равно оставляет очевидный пробел.

Схема четырёх слоёв запроса и того, что раскрывает каждый из них

Четыре слоя, которые раскрывает запрос, и что выявляет каждый из них

Согласованность user agent тоже важна: строка User-Agent, заявляющая Chrome 124 в паре с устаревшим профилем отпечатка JA4, сама по себе читается как противоречие. Антибот-вендоры помечают именно такое несоответствие, даже когда каждый отдельный заголовок выглядит корректно. Ни одна из этих проверок не требует обхода чего-либо на целевом сайте; они лишь подтверждают, что собственные сигналы клиента согласуются между собой до отправки запроса.

Слой Что должно совпадать Как проверить
TLS-рукопожатие Порядок наборов шифров и расширений для заявленного браузера Сравнить хеш JA3/JA4 с образцом известного браузера
Кадр настроек HTTP/2 Размер окна, размер таблицы заголовков, приоритет потоков Проверить значения кадра на соответствие настройкам браузера по умолчанию
Заголовки User-Agent, Accept-Language, Sec-CH-UA при наличии Ручная проверка или инструмент анализа заголовков
IP/сеть Тип ASN соответствует заявленному клиенту, резидентный или датацентр Проверить репутацию IP и данные ASN

Как проверить собственный TLS-отпечаток

Тестирование отпечатка начинается с чистого запроса к проверяющему эндпоинту, а затем — сравнения бок о бок с реальным браузером, обращающимся к тому же эндпоинту. Отпечаток JA4 группирует версию TLS, количество шифров, количество расширений и первое значение ALPN в читаемую строку, что делает визуальное сравнение проще, чем чтение сырого хеша (Scrapfly, инструмент отпечатков JA3/JA4, 2026). Запуск одного и того же теста дважды в разные дни также помогает подтвердить, что результат остаётся стабильным между обновлениями библиотек.

Инструменты, созданные для этого, включая собственный чекер Scrapfly и сторонние библиотеки вроде curl impersonate — название инструмента используется здесь исключительно для идентификации — существуют именно для того, чтобы сделать это сравнение возможным без догадок. Headless-браузер на Playwright или Puppeteer также даёт настоящее рукопожатие для сравнения, поскольку запускает реальный браузерный движок, а не скриптовый TLS-стек.

  • Шаг 1. Отправьте запрос с проверяемого клиента на эндпоинт тестирования отпечатков и зафиксируйте возвращённый хеш.
  • Шаг 2. Откройте тот же эндпоинт в реальном актуальном браузере и запишите его собственный хеш для сравнения.
  • Шаг 3. Сравните наборы шифров, количество расширений и значение ALPN бок о бок, а не судите только по совпадению хешей.
  • Шаг 4. Проверьте, соответствует ли заявленный заголовок User-Agent фактически наблюдаемому TLS-профилю.
  • Шаг 5. Зафиксируйте результат с датой, поскольку хеш может измениться после обновления библиотеки или браузера.

👉 Хотите увидеть, как правильно настроенный клиент ведёт себя от начала до конца?  Попробуйте демо с Insocks перед запуском полного тестового пакета.

Белые практики для стабильного сбора данных

Белый сбор данных начинается с правил самого целевого сайта: сначала официальные API, уважение к robots.txt и частота запросов, которая держится заметно ниже того, что могло бы нагрузить сервер. Возвращение к вопросу, что такое JA3, помогает объяснить, почему именно полноценные браузерные движки, а не трюки с заголовками, дают самые стабильные результаты, поскольку TLS-стек реального браузера по умолчанию уже соответствует его заявленной идентичности. Playwright, Puppeteer и Selenium запускают настоящие браузерные движки, поэтому их рукопожатие выглядит как у Chrome или Firefox без какой-либо дополнительной настройки (Scrapfly, 2026).

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

  • ✅ Используйте официальные API и задокументированные эндпоинты везде, где они существуют.
  • ✅ Уважайте robots.txt и опубликованные условия целевого сайта.
  • ✅ Распределяйте запросы во времени вместо пиковых всплесков на один эндпоинт.
  • ✅ Предпочитайте полную браузерную автоматизацию частичному спуфингу заголовков или TLS.
  • 💡 Более медленный и равномерный график сбора обычно вызывает меньше обращений в поддержку, чем быстрый и рваный.

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

Распространённые ошибки

Несколько процессных ошибок всплывают снова и снова, когда команды проверяют собственную конфигурацию. Тестирование один раз и отказ от повторной проверки после обновления библиотеки — самая распространённая, поскольку результаты TLS-фингерпринтинга могут измениться в тот момент, когда зависимость обновляет свой TLS-бэкенд. Ещё одна ошибка — запуск теста в staging-окружении, не соответствующем продакшену, потому что важен фактический путь запроса, а не локальная консоль.

  • ❌ Тестирование один раз и предположение, что результат остаётся действительным навсегда.
  • ❌ Проверка отпечатков в окружении, отличном от того, где задача фактически выполняется.
  • ❌ Доверие единственному сервису проверки без второй точки сравнения.
  • ❌ Игнорирование настроек HTTP/2 при погоне только за TLS-слоем.

Как качество прокси вписывается в общую картину

Раскрытие информации: Insocks — это наш сервис, и этот раздел описывает, что прокси-инфраструктура на самом деле делает в рамках более широкого стека сбора данных. Хорошая прокси-инфраструктура решает проблемы IP-слоя: географию, репутацию IP и стабильность соединения, тогда как TLS-фингерпринтинг остаётся отдельным слоем, которого прокси в одиночку коснуться не могут. Надёжный аптайм и чистые пулы IP важны для избежания рейт-лимитов на основе IP, но они ничего не говорят о порядке наборов шифров или списках расширений внутри рукопожатия.

Для задач сбора данных мы продаём резидентные прокси и статические IP-прокси, оба с задокументированной поддержкой протоколов и данными о местоположении. Сочетание надёжной прокси-инфраструктуры с правильно настроенным клиентом — будь то полноценный браузерный движок или тщательно подобранная библиотека — закрывает оба слоя сразу, вместо того чтобы оставить один из них открытым.

Возможность Что это значит на практике
Пулы резидентных и ISP-IP Снижает флаги репутации на основе IP, не затрагивает TLS
Географический таргетинг Соответствие источника запроса целевому рынку
Управление сессиями Сохраняет IP неизменным на протяжении многошагового процесса
Аптайм и поддержка Снижает количество сбоев соединения, не связанных с фингерпринтингом

Прокси закрывают сетевой слой, а не TLS-отпечаток, и любой провайдер, утверждающий обратное, переоценивает то, что может сделать смена IP. Команды, которым нужно закрыть оба слоя, обычно сочетают качественную прокси-инфраструктуру, например резидентные и ISP-прокси Insocks, с браузерным или правильно подобранным клиентом.

🔗 Зарегистрируйтесь для полного доступа, чтобы сравнить пулы прокси перед выбором тарифа.

Главные выводы

  • tls-рукопожатие читается до любого HTTP-заголовка, и в этом вся основа данного метода обнаружения.
  • Хеш-преемник JA3 остаётся стабильным даже после рандомизации порядка расширений, в отличие от предшественника.
  • Понимание того, что такое JA3, поясняет, почему браузероподобные клиенты проходят проверки стабильнее, чем скриптовые.
  • Прокси решают проблемы с IP; они никогда сами по себе не переписывают tls-рукопожатие.
  • Полная браузерная автоматизация остаётся самым надёжным путём к согласованному, браузероподобному отпечатку JA3.

Раскрытие информации и источники данных

Все данные в этой статье, включая цены, тарифные уровни, лимиты и доступность продуктов, верны на дату публикации, указанную на этой странице. Условия вендоров меняются часто и без предупреждения, входные тарифы меняются вместе с объёмом, а в день прочтения может действовать акционная цена. Ничто здесь не является офертой, гарантией текущих условий или рекомендацией к покупке.

Эта статья опубликована Insocks. Мы продаём прокси и раскрываем коммерческий интерес в последнем разделе выше. Прокси не меняют отпечаток JA3 или любой другой TLS-сигнал, и мы говорим об этом прямо, а не намекаем на обратное. Упомянутые здесь инструменты тестирования и библиотеки, включая чекер Scrapfly, curl-impersonate и фреймворки браузерной автоматизации, принадлежат своим владельцам и фигурируют исключительно для идентификации. Детали этого материала были проверены в августе 2026 года, а поведение клиента может меняться между версиями библиотек или браузеров.

Часто задаваемые вопросы

Вопросы ниже охватывают основы, о которых люди обычно спрашивают после первого знакомства с темой. Ответы остаются короткими и фактическими, соответствуя тому, что действительно показала бы вкладка браузера или инструмент командной строки. Ничто из этого не является руководством по обходу, поскольку цель здесь — понимание, а не уклонение.

Что такое TLS-отпечаток?

Короткая сигнатура, построенная из данных рукопожатия, которая определяет, какое программное обеспечение установило соединение.

Как вычисляется хеш JA3?

Пять полей рукопожатия объединяются и хешируются в 32-символьную строку.

В чём разница между JA3 и JA4?

Более новый метод сортирует расширения и использует более стойкий хеш, оставаясь стабильным после рандомизации порядка браузерами.

Может ли резидентный прокси скрыть мой TLS-отпечаток?

Нет, прокси меняет только IP-адрес; рукопожатие проходит без изменений.

Почему мой скрапер блокируется при корректных заголовках?

Заголовки загружаются после рукопожатия, поэтому несоответствующий профиль клиента помечается первым.

Как проверить свой собственный TLS-отпечаток?

Отправьте запрос в публичный инструмент проверки и сравните результат с реальным браузером.

2026-09-03