Odcisk TLS

Odcisk TLS to zestaw parametrów, które program wysyła na początku szyfrowanego połączenia; po nim strona rozpoznaje rodzaj klienta.

Zaktualizowano · Redakcja Prokso

Gdy przeglądarka lub skrypt otwiera stronę przez HTTPS, najpierw odbywa się uzgadnianie TLS. Pierwsza wiadomość klienta nazywa się ClientHello i jest wysyłana jawnie. Program wymienia w niej, co obsługuje: wersje TLS, zestawy szyfrów, rozszerzenia i ich kolejność, obsługiwane krzywe i protokoły.

Każda biblioteka buduje ClientHello po swojemu. Chrome, Firefox i Safari mają własne typowe zestawy, a biblioteki używane w skryptach w Pythonie, Go czy Node.js mają swoje. Dlatego po tych parametrach strona może rozpoznać, jaki program się z nią łączy, nawet nie patrząc na nagłówki.

Aby łatwo porównywać odciski, zamienia się je na krótki ciąg znaków. Najbardziej znane metody to JA3 i nowsza JA4. JA3 bierze wersję, szyfry, rozszerzenia i krzywe, a następnie liczy z nich hash. JA4 dodatkowo uwzględnia protokół i sortuje listy, ponieważ niektóre przeglądarki mieszają kolejność rozszerzeń przy każdym połączeniu.

Proxy nie zmienia odcisku TLS. Przy HTTPS Twój program wysyła do proxy polecenie CONNECT, a potem proxy tylko przekazuje zaszyfrowane bajty między Tobą a stroną. Uzgadnianie TLS odbywa się bezpośrednio między Twoim programem a stroną, a proxy widzi co najwyżej nazwę strony z pola SNI.

Dlatego skrypt i prawdziwa przeglądarka wyglądają dla strony inaczej, nawet jeśli mają ten sam IP i ten sam User-Agent. Jeśli nagłówek mówi „Chrome”, a ClientHello jest typowy dla biblioteki Pythona, strona widzi tę niezgodność. To samo dotyczy przeglądarek headless: ich odcisk TLS jest zwykle bliski zwykłej przeglądarce, ale inne sygnały mogą się różnić.

Odcisk TLS jest dla stron wygodny, bo trudno go zmienić przypadkiem. Zależy od wersji biblioteki i jej ustawień, a nie od tego, jaką stronę otwierasz albo z jakiej sieci się łączysz. Gdy przeglądarka się aktualizuje, jej odcisk też może się nieco zmienić, dlatego strony zwykle porównują go ze znanymi wartościami dla bieżących wersji. Niektóre serwisy pozwalają zobaczyć własny odcisk i porównać, jak wyglądają różne programy.

Odcisk TLS to tylko jedna część szerszego odcisku przeglądarki. Strony łączą go z innymi danymi i same decydują, jak zareagować. Proxy odpowiada za adres IP, a parametry połączenia zależą od programu, z którego korzystasz.

Pytania i odpowiedzi (FAQ)

Czy proxy zmienia odcisk TLS?

Nie. Połączenie HTTPS przez CONNECT jest szyfrowane od Twojego programu do strony, więc strona widzi ClientHello Twojego programu, a proxy tylko przekazuje bajty.

Czym są JA3 i JA4?

To popularne sposoby zapisania odcisku TLS jako krótkiego ciągu znaków. JA3 liczy hash z wersji, szyfrów, rozszerzeń i krzywych, a JA4 dodatkowo sortuje listy i uwzględnia protokół.

Rezydencjalne $1.59, mobilne $2.50, serwerowe $0.65 za 1 GB

Rejestracja w minutę, dostęp od razu po płatności.

Utwórz konto