Реферальная программа →
ГлавнаяГлоссарийTLS-отпечаток (JA3)
Глоссарий

TLS-отпечаток (JA3)

Сигнатура, выведенная из того, как клиент согласует TLS-рукопожатие, используемая для идентификации ПО, делающего запрос - часто через хеш JA3.

TLS-отпечаток идентифицирует ПО за соединением по конкретному способу, которым оно согласует TLS- (HTTPS-) рукопожатие. Список наборов шифров, расширений и параметров, которые предлагает клиент, характерен для используемой библиотеки или браузера. JA3 - популярный метод, хеширующий эти значения в короткую сигнатуру, представляющую клиента.

Это мощный инструмент обнаружения ботов, потому что работает ниже прикладного уровня. Можно выставить идеальный браузерный user-agent и чистые заголовки, но если ваша HTTP-библиотека согласует TLS иначе, чем реальный Chrome, JA3-отпечаток вас выдаёт. У реальных Chrome, Firefox и Safari - узнаваемые TLS-отпечатки; у Python requests и Go net/http - свои, очевидно не браузерные.

Антибот-системы держат базы известных «хороших» браузерных отпечатков и известных «плохих» отпечатков автоматизации. Запрос, чей TLS-отпечаток не совпадает с заявленным user-agent - заголовок Chrome, не-Chrome рукопожатие, - помечается как поддельный, часто ещё до того, как сайт вернёт контент.

Победа над TLS-фингерпринтингом требует инструментов, имитирующих рукопожатие реального браузера, - curl-impersonate, специализированных TLS-библиотек или полноценных браузеров. В сочетании с резидентными прокси и совпадающими заголовками браузер-точный TLS-отпечаток часто и есть то, что отделяет скраперы, которые проходят, от тех, что блокируются.

Хеш того, как ваш клиент здоровается

Любое TLS-соединение начинается с Client Hello, и это сообщение несёт куда больше, чем имя хоста. В нём перечислены поддерживаемые шифронаборы, предлагаемые расширения, известные эллиптические кривые и принимаемые форматы, причём в определённом порядке. Порядок задаёт библиотека, а не пользователь.

JA3 берёт эти поля, склеивает и хеширует. На выходе короткая строка, опознающая не человека, а программу. Chrome под Windows даёт одно значение, Firefox другое, Python requests третье, Go четвёртое. Два человека на одной сборке Chrome дают одинаковый JA3, и в этом суть: опознаётся софт.

Для защищающейся стороны это почти бесплатно. Не нужен ни JavaScript, ни куки, ни ожидание: хеш доступен с первого пакета, ещё до разбора вашего запроса. Отсюда столько мгновенных блокировок клиента, который ничего не успел сделать.

JA4 это более новая версия той же идеи, устойчивее к перетасовке и подробнее. Практический вывод не меняется: ваша http-библиотека объявляет, что она такое, раньше, чем говорит, чего хочет.

Что здесь может прокси, а чего не может

Наши прокси переносят трафик. Они не переписывают ваше TLS-рукопожатие, и честный провайдер не станет обещать обратное:

Откуда берётся отпечаток

requests / httpx / aiohttp   ->  отпечаток Python, распознаётся влёт
Go net/http                  ->  отпечаток Go
curl                         ->  отпечаток curl

curl-impersonate             ->  имитирует сборку настоящего браузера
Playwright / Puppeteer       ->  настоящий браузер, настоящий отпечаток
антидетект-браузеры          ->  браузер плюс изоляция профилей
  • Если сайт блокирует мгновенно с резидентского адреса, а браузер с того же адреса работает, дело было не в адресе.
  • Для скрапинга защищённых целей запускайте настоящий браузер или библиотеку имитации. Смена User-Agent у Python-клиента с рукопожатием ничего не делает.
  • Отпечатки следуют за версиями браузеров. Библиотека имитации, застрявшая на старой сборке Chrome, становится заметной, когда та исчезает из обихода.
  • Для работы с аккаунтами берите антидетект: он даёт настоящее рукопожатие плюс разделение кук и хранилища, чего прокси не даст.

Чего JA3 сайту не говорит

Он не опознаёт вас

Отпечаток Chrome общий у миллионов. Именно поэтому необычный бросается в глаза.

Он не чинится прокси

Рукопожатие делает ваш клиент, и через нас оно проходит без изменений.

Он не обходится ротацией адресов

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

Совпасть с браузером мало

Порядок заголовков, настройки HTTP/2 и поведение должны согласовываться с рукопожатием, иначе противоречие просто переехало слоем выше.

Смотри на практике

Готов использовать tls-отпечаток (ja3)?

SotaProxy даёт доступ к ротирующим резидентским, мобильным, дата-центр и ISP прокси. Без минимальных платежей.

Начать