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 ГБ

Реєстрація за хвилину, доступи одразу після оплати.

Створити акаунт