Glossar

Was ist ein TLS-Fingerabdruck (JA3 / JA4)?

Ein TLS-Fingerabdruck ist ein Hash, der aus der spezifischen Struktur des TLS-Handshakes eines Clients abgeleitet wird (Cipher-Liste, Erweiterungen, ALPN-Werte, GREASE-Bytes usw.) und den zugrunde liegenden HTTP-Client, Browser oder die Bibliothek identifiziert, bevor Daten auf Anwendungsebene ausgetauscht werden.

Verstehen Sie, wie JA3 und JA4 funktionieren, warum sie verraten, dass Sie Python requests oder curl verwenden, bevor Ihr Scraper überhaupt eine HTTP-Anfrage sendet, und wie Sie sie neutralisieren können.

Erklärt

Wenn Ihr Client eine TLS-Verbindung öffnet, sind die allerersten Bytes ein ClientHello-Paket, das beschreibt, welche Cipher Suites, TLS-Versionen, Erweiterungen, elliptischen Kurven und ALPN-Werte Ihr Client unterstützt. Die genaue Liste und Reihenfolge dieser Attribute ist implementierungsspezifisch - Chromes ClientHello sieht anders aus als das von Firefox, das sich von curl unterscheidet, das sich von Pythons `requests`-Bibliothek unterscheidet, und so weiter.

JA3 (und sein Nachfolger JA4) ist ein Hash-Format, das die Struktur des ClientHello in einen kurzen Bezeichner umwandelt. Anti-Bot-Anbieter berechnen diesen Hash für jede eingehende TLS-Verbindung und gleichen ihn mit bekannten Signaturen ab. Wenn Ihr Scraper Python `requests` verwendet, stimmt Ihr TLS-Fingerprint mit dem OpenSSL-Standard überein und ist sofort als 'kein echter Browser' identifizierbar - noch bevor Sie ein einziges HTTP-Byte senden.

Das ist der Grund, warum so viele Scraper bei Cloudflare, Akamai und ähnlichen Systemen scheitern, selbst wenn IP und User-Agent korrekt aussehen. Die TLS-Schicht verrät, dass die Anfrage nicht von Chrome kam. Moderne Stealth-Bibliotheken (wie `curl_cffi`, `tls-client`, Playwright mit den richtigen Launch-Flags) imitieren echte Browser-TLS-Fingerprints, um dies zu vermeiden.

So funktioniert es

JA3 erstellt den Fingerprint aus fünf Feldern des ClientHello: TLS-Version, unterstützte Cipher Suites, unterstützte Erweiterungen, unterstützte elliptische Kurven und unterstützte Punktformate elliptischer Kurven. Diese werden zusammengefügt, das Ergebnis wird MD5-gehasht und ergibt eine 32-Zeichen-Signatur.

JA4 (der moderne Nachfolger) erweitert dies um ALPN, Version, SNI-Präsenz, GREASE-Behandlung und ordnet Erweiterungen auf eine stabile Weise, die gegenüber Randomisierung robust ist. JA4 hat auch Varianten für QUIC (JA4Q), HTTP (JA4H) und SSL-Session (JA4S). Server berechnen den Fingerprint und gleichen ihn entweder mit Zulassungs-/Sperrlisten ab oder speisen ihn zusammen mit anderen Signalen in ein Risikobewertungsmodell ein.

Typen

JA3

Originaler TLS-ClientHello-Fingerabdruck, MD5 aus geordneten Cipher-/Erweiterungs-/Kurven-/Formatfeldern. Weit verbreitet, aber anfällig für die Randomisierung der Erweiterungsreihenfolge in modernen Browsern.

JA3S

Serverseitiges Gegenstück zu JA3, erstellt Fingerabdrücke des TLS-ServerHello. Wird verwendet, um den Server-Software-Stack statt des Clients zu identifizieren.

JA4

Moderner Nachfolger von JA3. Behandelt GREASE, Randomisierung und Erweiterungsreihenfolge robuster. Unterteilt in JA4 (TCP), JA4Q (QUIC), JA4H (HTTP), JA4L (Latenz), JA4T (TCP-Fingerabdruck), JA4X (X.509-Zertifikat).

Akamai BMP / Datadome / Cloudflare bot.management

Proprietäre Anti-Bot-Fingerabdrücke, die auf JA3/JA4 mit zusätzlichen Signalen aufbauen (Besonderheiten bei der Randomisierung der TLS-Erweiterungsreihenfolge, GREASE-Byte-Inspektion, Paket-Timing). Praktisch unmöglich zu fälschen, ohne einen echten Browser zu verwenden.

Häufige Anwendungsfälle

Identifizierung von HTTP-Clients (curl, requests, Python http.client) vor jeder HTTP-Schicht
Bot-Abwehr auf der TLS-Schicht
Netzwerk-Forensik und IDS-Regeln
Rate-Limiting nach Client-Typ
Erkennung benutzerdefinierter oder modifizierter Scraping-Clients
FAQ

Häufig gefragt FAQ-Fragen

Häufige Fragen zu tls fingerprint.

User-Agent ist ein HTTP-Header, den Ihr Client im Klartext sendet; Sie können ihn auf beliebige Werte setzen. JA3 wird aus der Struktur des TLS-Handshakes selbst berechnet - Sie können ihn nicht einfach durch das Setzen eines Headers ändern. Um Ihren JA3 zu ändern, müssen Sie die zugrunde liegende TLS-Client-Bibliothek oder deren Konfiguration ändern.