Zum Inhalt springen
Grundlagen·8 Min. Lesezeit

TLS-Fingerprinting erklärt

Wie TLS-Fingerprinting Bots am Handshake erkennt — JA3, JA4 und warum es Scraper erwischt, die User-Agent-Checks umgehen.

Was ist TLS-Fingerprinting?

TLS-Fingerprinting identifiziert die Software hinter einer HTTPS-Verbindung, indem es die erste Nachricht des Handshakes analysiert. Wenn ein Client eine TLS-Verbindung öffnet, sendet er ein Client-Hello-Paket, das TLS-Version, Cipher-Suites, Extensions und deren Reihenfolge offenlegt. Diese Kombination ist eine Signatur der zugrundeliegenden TLS-Bibliothek auf Byte-Ebene.

Der entscheidende Punkt: Das Client Hello ist ein Implementierungsdetail, kein Header, den der Scraper frei wählt. Den User-Agent können Sie beliebig setzen, die Cipher-Liste Ihrer TLS-Bibliothek nicht. Ein Python-Skript, das sich als Chrome ausgibt, wird bereits beim Handshake entlarvt.

Warum TLS-Fingerprinting jetzt wichtig ist

Automatisierter Traffic ist inzwischen der Mehrheitsanteil im Web. Impervas Bad Bot Report 2025 misst 51 % des gesamten Web-Traffics 2024 als automatisiert, zum ersten Mal seit einem Jahrzehnt mehrheitlich, mit 37 % bösartigen Bots (Imperva, 2025). Eine Site, die Bibliothek und Browser nicht unterscheiden kann, ist blind gegenüber mehr als einem Drittel des eigenen Traffics, und diese Blindheit ist genau dort am teuersten, wo Scraper zielen: Login-Endpunkte, Preisseiten, Such-APIs und RSS-Feeds.

Die Verschiebung von menschlichem zu agentischem Traffic zwingt die Frage auf die Protokoll-Ebene. Header lügen, IPs rotieren, der User-Agent ist ein freies Textfeld. Der TLS-Handshake ist das Eine, was der Scraper produzieren muss, bevor irgendein HTTP-Body übertragen wird, und der Code, der ihn erzeugt, ist der Code, der tatsächlich läuft.

Arten von TLS-Fingerprints (JA3, JA4, JA4H)

Drei Fingerprint-Formate dominieren die Landschaft 2026.

**JA3.** Die erste breit eingesetzte TLS-Fingerprinting-Methode, veröffentlicht von Salesforce-Ingenieuren im Januar 2019. JA3 nimmt fünf Felder aus dem Client Hello (Version, akzeptierte Ciphers, Liste der Extensions, elliptische Kurven und Punktformate), verkettet sie und hasht das Ergebnis per MD5 zu einem 32-Zeichen-Fingerprint.

Die Methode funktionierte jahrelang. Anfang 2023 begann Chrome, die Reihenfolge der TLS-Extensions im Client Hello zu randomisieren. Die Mathematik ist brutal: Ein einzelner Chrome-Client mit 16 Extensions in zufälliger Reihenfolge kann 16 Fakultät verschiedene Ordnungen produzieren, rund 20,9 Billionen JA3-Hashes aus demselben Browser auf derselben Maschine. Stamus Networks schrieb, JA3 sei als Kennung nutzlos geworden. Firefox folgte mit ähnlicher Randomisierung.

JA4 und die JA4+-Suite

**JA4.** FoxIO veröffentlichte JA4 im September 2023 als direkte Antwort auf das Randomisierungsproblem. Der Fix ist simpel: Ciphers und Extensions werden vor dem Hashing alphabetisch sortiert. Randomisierte Reihenfolge verändert das Ergebnis nicht mehr, weil es nie von der Reihenfolge abhing. JA4 strukturiert den Fingerprint zudem im `a_b_c`-Format mit drei Segmenten, die unabhängig abgefragt werden können.

**JA4+.** JA4 ist Teil einer größeren Suite. Dazu gehören JA4S für TLS-Server, JA4H für HTTP-Request-Muster, JA4X für X.509-Zertifikate, JA4T für TCP-Stack und JA4SSH für SSH. Jeder Baustein erfasst eine andere Schicht der Verbindung, und die Segmente sind so entworfen, dass sie kombinierbar bleiben. Anfang 2025 hatten Cloudflare und Fastly JA4 im Bot-Management ausgerollt.

Ein Hinweis aus der FoxIO-Spec: Der JA4 eines Browsers verschiebt sich etwa einmal im Jahr, wenn sich dessen TLS-Bibliothek aktualisiert. Fingerprint-Datenbanken müssen diese Updates pflegen, sonst häufen sie False Positives gegen das jeweils neueste Chrome.

Wie TLS-Fingerprinting funktioniert

Jeder Browser, jede Scraping-Bibliothek und jedes Bot-Framework präsentiert eine andere Kombination von Ciphers und Extensions. Pythons requests-Bibliothek hat einen JA3-Hash, curl einen anderen, Firefox seinen eigenen. Ein Scraper, der `Mozilla/5.0...` im User-Agent sendet, aber Pythons JA3 auf der Leitung produziert, hat sich bereits selbst als Lügner entlarvt.

Der Abgleich passiert, bevor HTTP-Daten fließen. Der Client öffnet die TCP-Verbindung, sendet das Client Hello als erste TLS-Nachricht, der Edge erfasst das Byte-Muster, hasht oder sortiert es nach JA3- oder JA4-Regeln und schlägt den Hash gegen eine Signatur-Datenbank nach. Stimmt der Fingerprint nicht zum deklarierten User-Agent, muss der Edge entscheiden, bevor der HTTP-Request überhaupt startet.

Wie Sie Bots über TLS-Fingerprints identifizieren

Die Skala, auf der TLS-Fingerprinting läuft, lässt sich an Zahlen zeigen. Cloudflare analysiert laut eigenen Angaben täglich über 15 Millionen einzigartige JA4-Fingerprints aus mehr als 500 Millionen User Agents und Milliarden von IP-Adressen (Cloudflare, 2024). Das ist die Gesamtsignalmenge, die ein großer Edge-Provider pro Tag auswertet.

Der nützliche Teil dieser Daten ist, was sie über Nicht-Browser aussagen. Gängige HTTP-Bibliotheken wie Pythons requests, Gos `net/http` oder Nodes axios erzeugen TLS-Handshakes, die kein echter Browser sendet. Die Cipher-Reihenfolge weicht ab, der Extension-Satz ist anders, GREASE-Werte fehlen, das Session-Ticket-Verhalten ist anders. Machine Learning ist dafür nicht nötig. Ein Lookup gegen eine Handvoll bekannter Bibliotheks-Fingerprints reicht für das erste Paket.

Zwei konkrete Checks decken den Großteil des Bibliotheks-Traffics in der Praxis auf. Gleichen Sie die Cipher-Reihenfolge im Client Hello gegen die veröffentlichte Reihenfolge des im User-Agent deklarierten Browsers ab. Gleichen Sie das Vorhandensein von GREASE-Werten gegen das ab, was diese Browser-Version emittiert. Eine Abweichung in einem der beiden Punkte ist ein Signal, dass der Request nicht das ist, was er behauptet.

Wie Sie reagieren, wenn Bots Fingerprints fälschen

Scraper haben JA3 lange kommen sehen. Es gibt inzwischen eine kleine Industrie von Impersonations-Bibliotheken, die genau dafür gebaut sind, echte Browser-Handshakes aus Skripten abzuspielen. curl-impersonate ist ein curl-Fork, gegen NSS und BoringSSL gebaut, und produziert Byte-identische Client Hellos für aktuelle Versionen von Chrome, Firefox, Edge und Safari. uTLS ist ein Go-Fork von `crypto/tls`, der den Aufbau des ClientHello freilegt. CycleTLS bringt die gleiche Fähigkeit nach Node.js. curl_cffi gibt Python den curl-impersonate-Handshake als Drop-in-Ersatz für die `requests`-Bibliothek. Alle vier sind Open Source. Alle vier sind trivial zu installieren.

Eine UC-Davis-Studie 2025 testete zwanzig kommerzielle Bot-Dienste gegen zwei führende Detection-Systeme und maß durchschnittliche Umgehungsraten von 52,93 % gegen DataDome und 44,56 % gegen BotD über mehr als eine halbe Million Requests (Venugopalan et al., IMC 2025). Nennen wir das beim Namen: Peer-reviewte Daten zeigen, dass über die Hälfte des kommerziellen Scraping-Traffics durch eines der verbreitetsten Detection-Systeme durchrutscht.

Die Antwort ist geschichtet, nicht seitlich. Cloudflares eigene Ingenieure sagen es im JA4-Signals-Blogpost deutlich: Fingerprints lassen sich leicht fälschen, sie ändern sich häufig, Traffic- und Verhaltensmuster entwickeln sich ständig weiter. Die Antwort, die sie JA4 beistellen, ist verhaltensorientiert: Inter-Request-Features über die letzte Stunde globalen Traffics, die nach Clustern suchen, die kein ehrlicher Browser bilden würde.

Ein einzelner JA4-Hash sagt, welche Software die Verbindung aufgebaut hat. Er sagt nicht, was diese Software tut. Ein gefälschter Chrome-Fingerprint aus Tausenden Residential-IPs, Hunderte Seiten pro Minute pro Session, nur HTML und keine Bilder, bleibt offensichtlich ein Bot. Der Fingerprint grenzt die Suche ein. Das Verhalten bestätigt das Urteil. Entfällt eine Schicht, sinkt die Wirksamkeit.

Zentrale Erkenntnisse

- TLS-Fingerprinting identifiziert die Software hinter einer HTTPS-Verbindung, indem es das Client Hello inspiziert, bevor HTTP-Daten fließen. Ein User-Agent ist ein String, den der Scraper gewählt hat, ein TLS-Fingerprint ist eine Eigenschaft des tatsächlich laufenden Codes. - Drei Formate decken die Landschaft ab: JA3 (von Chromes 2023er Extension-Randomisierung gebrochen), JA4 (sortiert vor dem Hashing, resistent gegen Randomisierung) und die JA4+-Suite (HTTP, TCP, SSH). - Fingerprints allein schließen die Lücke nicht. Eine UC-Davis-Studie 2025 misst durchschnittliche Umgehungsraten von 52,93 % gegen DataDome und 44,56 % gegen BotD mittels Bibliotheken wie curl-impersonate und uTLS. - Der tragfähige Stack ist geschichtet: TLS-Fingerprint plus HTTP/2 SETTINGS, Verhaltensmuster und eine Crawler-Signatur-Datenbank. Centinel führt 1.600+ Crawler-Fingerprints gegen dieses geschichtete Modell am Edge aus.

Sehen Sie, was Ihre Website gerade crawlt

Starten Sie ein kostenloses Audit und erhalten Sie einen detaillierten Bericht darüber, welche KI-Crawler auf Ihre Inhalte zugreifen.

Kostenloses Audit starten