Zum Inhalt springen
SDK · Python · Node · .NET

Ein Stealth-Browser für Playwright & Puppeteer

Clearcote ist Chromium, Ihre vorhandene Automatisierung funktioniert also weiter. Tauschen Sie den Startaufruf gegen launch() aus dem SDK, und Sie erhalten ein Playwright-Handle, das sich wie ein Browser steuern lässt (auf einem Wegwerfprofil, daher gibt newContext() denselben Kontext zurück) – mit einem Build, dessen Identitätssteuerung in die Engine kompiliert ist, statt als JavaScript injiziert zu werden.

Der offene Build braucht kein Konto. Der neueste Build ist mit GitHub kostenlos, für jeweils einen Browser.

Startzeile ändern, alles andere behalten

# pip install clearcote
from clearcote import launch

browser = launch(fingerprint="account-42", light_stealth=True)
page = browser.new_page()
page.goto("https://example.com")
browser.close()

Highlights

Migration in einer Zeile

launch() liefert ein Playwright-Handle auf einem Wegwerfprofil, Selektoren und Page Objects bleiben also, wie sie sind; newContext() gibt dort denselben Kontext zurück, übergeben Sie deshalb ephemeralProfile: false, wo Sie isolierte Kontexte brauchen. Puppeteer verbindet sich mit puppeteer.connect mit dem CDP-Endpunkt von serve().

Ein verifiziertes Binary, für Sie geladen

Beim ersten Einsatz lädt das SDK den passenden Build herunter und prüft seinen SHA-256-Hash: den offenen Build gegen im SDK hinterlegte Hashes, den lizenzierten Build gegen den Hash, den sein Download mitliefert. Das optionale Auto-Update (nur offener Build) prüft das neueste Release gegen die veröffentlichten Prüfsummen und, wenn gpg installiert ist, gegen deren GPG-Signatur.

Identität als benannte Optionen

fingerprint, platform, brand, timezone, acceptLanguage, proxy und geoip sind Argumente, keine Switches, die man sich merken muss. Ein Seed hält eine Identität über Läufe hinweg stabil.

Kohärente Voreinstellungen

Headed-Starts verzichten auf den emulierten Viewport, damit die Seitengröße zum echten Fenster passt, WebRTC hält die Adresse Ihres Rechners privat, und hinter einem Proxy ist QUIC aus, damit kein UDP am Proxy vorbeiläuft.

Humanisierte Eingabe, ein Flag

humanize: true sendet Klicks, Tippen, Drags und Scrollen als vertrauenswürdige native Eingabe auf gekrümmten Bahnen, während navigator.webdriver false bleibt.

Drei Sprachen

Python (sync und async), Node und .NET, auf PyPI, npm und NuGet. .NET hat ebenfalls geoip sowie humanisierte Eingabe als explizite Aufrufe im Stil von HumanClickAsync; gespeicherte Profile, Render-Kohärenzprüfungen, Widevine und die Agenten-Helfer gibt es vorerst in Python und Node.

Was das SDK für Sie erledigt

Das Paket kapselt das Clearcote-Binary, sodass Identitätsoptionen zu benannten Argumenten werden. Es ermittelt den Browser in fester Reihenfolge (ein expliziter Pfad, die Umgebungsvariable CLEARCOTE_BINARY, eine von Ihnen angeforderte version, der neueste lizenzierte Build, wenn es einen Lizenzschlüssel findet, dann der im SDK gepinnte offene Build), verifiziert und cacht ihn, startet ihn über Playwright und gibt die Objekte zurück, die Ihr Code bereits verwendet.

Weil die Steuerung in der C++-Engine sitzt, muss kein Stealth-Plugin geladen und nichts in die Seite injiziert werden. Ein Plugin patcht Properties aus JavaScript, und ein gepatchter Getter lässt sich von einem nativen unterscheiden. Hier ist der Getter der native – im Hauptframe, in iframes und in Workern. Warum das wichtig ist, erklärt So funktioniert Erkennung.

Zwei Dinge verhalten sich anders als im Standard-Chromium, beide mit Absicht. Console- und Page-Error-Events werden nicht an den Automatisierungs-Client weitergeleitet, weil eine Automatisierungs-Probe genau diese Weiterleitung misst; sammeln Sie sie in der Seite und lesen Sie sie mit page.evaluate() aus. Und im lizenzierten Build (kostenlos mit GitHub) funktioniert ein SOCKS5-Proxy mit Benutzername und Passwort direkt, wobei die Zugangsdaten als separate Felder username und password übergeben werden, denn die Engine implementiert die Authentifizierung, die Standard-Chromium fehlt. Der offene Build kann sich nicht bei einem SOCKS5-Proxy authentifizieren.

Ein Stealth-Plugin im Vergleich zu einem Browser auf Engine-Ebene

JavaScript-Stealth-Plugin
Clearcote
Wo die Änderung sitzt
Skript, das in jede Seite und jeden Frame injiziert wird
In die Chromium-Engine kompiliert
Prüfungen auf native Funktionen
Ein gepatchter Getter liefert als String seinen eigenen Quelltext
Der Getter ist nativer Code und meldet daher [native code]
Worker und iframes
Jeder Realm muss erneut gepatcht werden, und Lücken fallen auf
Überall dieselben Werte, aus einer Engine
TLS und HTTP/2
Was auch immer der zugrunde liegende Browser sendet
Der Chrome-Handshake der Engine selbst, passend zur Version, die die Persona meldet
Einrichtung
Ein Plugin, seine Evasions und deren Optionen
Ein einziger launch()-Aufruf

Open-Source-Stealth-Plugins sind ein vernünftiger erster Schritt, und viele Projekte fangen damit an. Ein vollständigeres Bild gibt der Vergleich mit puppeteer-extra-plugin-stealth.

Wofür es eingesetzt wird

Scraping und Datenerfassung

Behalten Sie Ihren bestehenden Playwright- oder Puppeteer-Crawler und tauschen Sie aus, was darunter läuft.

End-to-End-Tests auf echten Seiten

Testen Sie Abläufe auf Websites, die automatisiertes Standard-Chromium anders behandeln als einen normalen Browser.

Eine bestehende Testsuite migrieren

Selektoren und Page Objects bleiben, wo sie sind, nur der Startaufruf ändert sich. Fixtures, die pro Test einen frischen Kontext öffnen, brauchen ephemeralProfile: false, weil newContext() bei launch() dessen einzigen Profilkontext zurückgibt.

Fingerprinting-Forschung

Führen Sie dieselben Skripte mit und ohne Persona aus und vergleichen Sie, was eine Seite misst.

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

Das SDK ist in allen drei Tarifen enthalten, ebenso fast alle Identitätsoptionen (die wenigen, die den lizenzierten Build brauchen, sind in der Liste der Fingerprint-Flags markiert). Ohne Schlüssel läuft der offene Build. Mit einem Lizenzschlüssel (kostenlos mit einem GitHub-Konto) läuft der neueste Build, mit den Extras, die es nur im lizenzierten Build gibt, siehe Preisseite.

Tarife vergleichen

FAQ

Ist es wirklich ein Drop-in-Ersatz?

Nahezu. Das synchrone launch() in Python und Node liefert ein browserähnliches Handle auf einem Wegwerfprofil: newPage() und alles danach funktionieren wie gewohnt, aber newContext() gibt denselben Kontext zurück. Code, der isolierte Kontexte braucht, sollte daher ephemeralProfile: false übergeben oder einen Browser pro Kontext starten. launchPersistentContext() liefert einen Standard-BrowserContext. Puppeteer verbindet sich mit puppeteer.connect mit dem CDP-Endpunkt von serve(), und das .NET-SDK liefert Standardobjekte von Microsoft.Playwright (IBrowserContext aus LaunchEphemeralProfileAsync, IBrowser aus LaunchAsync).

Brauche ich noch puppeteer-extra-plugin-stealth oder playwright-stealth?

Nein, und besser fügen Sie keines hinzu. Diese Plugins patchen Werte aus injiziertem JavaScript heraus, und schon das Patchen selbst kann auffallen. Clearcote setzt die Werte in der Engine, für ein Plugin bleibt also nichts zu patchen.

Funktioniert es headless?

Ja. Headed bleibt aber die sicherere Voreinstellung, wo Sie es betreiben können, weil der Headless-Modus eigene verräterische Merkmale hat. In Containern läuft das offizielle Docker-Image standardmäßig headed unter einem virtuellen Display.

Welche Sprachen werden unterstützt?

Python (synchrone und asynchrone API), Node.js und .NET. Alle drei bieten geoip-Abgleich und humanisierte Eingabe (ein Start-Flag in Python und Node, explizite Aufrufe im Stil von HumanClickAsync in .NET). Gespeicherte Profile, Render-Kohärenzprüfungen, Widevine und der In-Browser-Agent sind vorerst nur in Python und Node verfügbar.

Wie behalte ich zwischen Läufen dieselbe Identität?

Verwenden Sie denselben fingerprint-Seed erneut und nutzen Sie launchPersistentContext mit einem User-Data-Verzeichnis, damit Cookies und Speicher erhalten bleiben. Leiten Sie den Seed aus Ihrer eigenen Account- oder Tenant-ID ab, bleibt er reproduzierbar. Mehr unter Persistente Identitäten.

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.