Zum Inhalt springen
Netzwerk · JA3 · JA4 · HTTP/2

Ein TLS-Fingerprint, der zum User-Agent passt

Bevor eine Seite auch nur eine Zeile JavaScript ausführt, hat der TLS-Handshake den Client bereits beschrieben. Der Handshake von Clearcote ist Chromiums eigener, und die wenigen Felder, die sich zwischen Chrome-Versionen ändern, folgen der Version, die die Persona angibt. So erzählen Netzwerkschicht und User-Agent dieselbe Geschichte.

In jedem Tarif, standardmäßig aktiv. Es gibt nichts zu konfigurieren.

Die Voreinstellung passt bereits

import { launch } from "clearcote";

// default: the ClientHello follows the persona's claimed Chrome major
const browser = await launch({ fingerprint: "account-42", tlsProfile: "match-persona" });

// or pin a major (only together with a matching brandVersion), or leave the build's own TLS untouched:
//   tlsProfile: "chrome-150"
//   tlsProfile: "native"

Highlights

Chromiums eigener Handshake

BoringSSL, wie Chrome es ausliefert: Cipher-Liste, Versionsgrenzen und die Extension-Reihenfolge pro Verbindung sind echt, keine Nachimplementierung.

Folgt der angegebenen Version

Die Felder, die sich zwischen aktuellen Chrome-Hauptversionen unterscheiden, etwa die Post-Quanten-Key-Share-Gruppe und der ALPS-Codepoint, folgen der angegebenen Hauptversion, statt auf der des Builds zu bleiben.

Keine Naht zwischen den Schichten

JavaScript-Oberfläche und Handshake stammen aus einem Browser, es gibt also keinen Widerspruch zwischen einem gepatchten User-Agent und einem ungepatchten Netzwerk-Stack.

HTTP/2 aus demselben Stack

SETTINGS, Window-Updates und Header-Reihenfolge kommen aus Chromiums eigener HTTP/2-Implementierung, nicht aus einer separaten Client-Bibliothek.

Die Marke steckt in den Headern

Edge, Opera und Vivaldi teilen Chromiums Handshake; die Marke steckt im User-Agent und in den Client Hints, nicht im ClientHello.

Konfigurierbar, selten nötig

Die Voreinstellung passt für fast alle. Die Option gibt es, damit Sie nie eine Version pinnen, die Ihrer Markenversion widerspricht.

Warum der Handshake zählt

Ein TLS-Fingerprint (JA3 und sein Nachfolger JA4) fasst den ClientHello zusammen: welche Versionen, Ciphers, Extensions und Gruppen ein Client anbietet, und in welcher Form. HTTP/2 fügt eine weitere Ebene hinzu: den SETTINGS-Frame, Fenstergrößen und die Reihenfolge der Pseudo-Header. Beides wird auf dem Server gelesen, bevor irgendein Skript läuft, und beides lässt sich mit wenig Aufwand mit dem User-Agent abgleichen.

An diesem Abgleich fallen viele Automatisierungs-Stacks auseinander. Eine HTTP-Bibliothek mit Chrome-User-Agent sendet trotzdem den Handshake ihrer eigenen Bibliothek, und eine JavaScript-Stealth-Schicht ändert, was die Seite ausliest, aber nicht, was übers Netzwerk ging. Clearcote ist durchgehend Chromium, darunter steckt also kein zweiter Client.

Was Clearcote ergänzt, ist Versionskohärenz. Jedes Chrome-Release ändert ein paar Details am Handshake. Gibt eine Persona eine andere Chrome-Version an als die des Builds, auf dem sie läuft, passt match-persona genau diese Felder an die angegebene Hauptversion an und lässt alles andere so, wie Chromium es erzeugt.

Ein gespoofter User-Agent im Vergleich zu Clearcote

Automatisierung mit gespooftem User-Agent
Clearcote
Handshake
Vom zugrunde liegenden Browser oder der HTTP-Bibliothek
Chromiums eigenes BoringSSL
UA gibt Chrome X an
Der Handshake stammt von der Version, die tatsächlich läuft
Versionsabhängige Felder folgen standardmäßig Chrome X
HTTP/2-SETTINGS und Header-Reihenfolge
Vom zugrunde liegenden Client
Aus dem HTTP/2-Stack von Chromium
Wo der UA geändert wird
Ein Header-Override oder ein injiziertes Skript
In der Engine, zusammen mit den Client Hints

Wofür es eingesetzt wird

Websites, die den Handshake bewerten

Viele Edge-Netzwerke lesen JA3 oder JA4, bevor die Seite lädt. Ein kohärenter Handshake beseitigt einen Widerspruch aus dem Gesamtbild.

Eine selbst gesetzte Markenversion

Wenn Sie brandVersion bei einer Chrome- oder Edge-Persona setzen, folgen die wichtigsten versionsabhängigen Handshake-Felder diesem Wert. Der Rest des Browsers meldet weiterhin die Version, die die Engine tatsächlich hat. brandVersion nicht zu setzen, bleibt daher die kohärente Voreinstellung.

Netzwerkforschung

Vergleichen Sie mit demselben Binary, wie sich die versionsabhängigen Handshake-Felder über Chrome-Hauptversionen hinweg ändern.

Clearcote ist für Datenschutz, Tests, Forschung und rechtmäßige Automatisierung gebaut. Sie sind dafür verantwortlich, wie Sie es einsetzen, und dafür, die Nutzungsbedingungen der Websites einzuhalten, die Sie besuchen.

In welchem Tarif enthalten

In jedem Tarif, mit der Standardeinstellung.

Tarife vergleichen

FAQ

Was ist ein JA3- oder JA4-Fingerprint?

Eine kompakte Zusammenfassung des TLS-ClientHello eines Clients: seine Versionen, Cipher Suites, Extensions und unterstützten Gruppen. Server nutzen sie, um Browser von HTTP-Bibliotheken zu unterscheiden und zu prüfen, ob ein Client das ist, was sein User-Agent behauptet. Mehr im Q&A zu JA3 und JA4.

Randomisiert Clearcote den TLS-Fingerprint?

Nein. Zufällige Handshakes passen zu keinem echten Browser und sind deshalb leicht zu erkennen. Chrome selbst mischt die Reihenfolge seiner TLS-Extensions bei jeder Verbindung, und Clearcote behält dieses Verhalten genau so bei, wie Chrome es umsetzt.

Ändert eine Edge- oder Opera-Persona den ClientHello?

Nein. Diese Browser basieren auf Chromium und teilen seinen Handshake. Die Marke steckt im User-Agent, in den Client Hints und in den Headern, und genau dort setzt Clearcote sie.

Wann würde ich tlsProfile ändern?

Fast nie. match-persona folgt bereits der Markenversion, die Sie angeben. Pinnen Sie chrome-<major> nur, wenn Sie die Markenversion auf anderem Weg setzen, und nutzen Sie native, um den Handshake des Builds genau so zu belassen, wie er kompiliert wurde.

Mehr dazu in der Dokumentation

Verwandte Funktionen

Clearcote ausprobieren

Direkt einsetzbar mit Playwright & Puppeteer, kohärent bis hinunter zum TLS-Handshake, mit einem Open-Source-Build als Ausgangspunkt.

Mit GitHub kostenlos für einen Browser. Ohne Kreditkarte.