Zum Inhalt springen
Docker · serve() · CDP

Ein Anti-Detect-Browser mit einem einzigen docker run

Ziehen Sie das offizielle Image, und schon lauscht ein Clearcote-Browser auf einem CDP-Port. Richten Sie Playwright, Puppeteer, browser-use, Crawl4AI oder Stagehand darauf aus, und Ihr Code bleibt, wie er ist. Das Image startet das Binary direkt, ohne den Automatisierungs-Switch, und navigator.webdriver bleibt false.

Ohne Schlüssel läuft im Image der offene Build. Mit einem kostenlosen GitHub-Schlüssel bekommen Sie den neuesten Build.

Starten, verbinden

# CDP on http://localhost:9222, published to this host only
docker run -d --rm -p 127.0.0.1:9222:9222 --shm-size=1g teamflatearth/clearcote

Highlights

Ein verifiziertes Binary, fest eingebaut

Das Image enthält den per SHA-256 verifizierten offenen Build für Linux sowie metrikkompatible Klone gängiger Windows-Schriften, sodass lateinischer Text dieselben Maße ergibt wie mit den Schriften der Persona. Das Font-Bundle des offenen Builds enthält keine CJK-Schriften, das des lizenzierten Builds schon.

Konfiguration per Umgebungsvariablen

Seed, Plattform, Marke, Sprache, Zeitzone und TLS-Profil sind CC_*-Umgebungsvariablen. Im Container gibt es keinen Code, den Sie pflegen müssen.

Der neueste Build auf Abruf

Setzen Sie CLEARCOTE_LICENSE_KEY, und der Container ermittelt den neuesten lizenzierten Build – oder bei Pro einen mit CC_VERSION festgelegten.

serve() und eine CLI

Kein Docker im Einsatz? serve() in Python, Node oder .NET oder clearcote serve in der Shell startet den Browser genauso direkt und gibt Ihnen eine CDP-URL.

Jeder CDP-Client

connectOverCDP von Playwright, puppeteer.connect, browser-use, Crawl4AI, Stagehand oder das rohe DevTools Protocol auf dem Port.

Ein überprüfbares Dockerfile

Das Dockerfile und sein Entrypoint liegen im öffentlichen Repository. Sie können also genau nachlesen, was das Image installiert und ausführt, und es selbst bauen. Das gilt für das Image und den darin enthaltenen offenen Build; mit einem Lizenzschlüssel lädt der Container beim Start die lizenzierte Engine herunter.

So ist der Container aufgebaut

Der Container startet Clearcote direkt statt über einen Testtreiber und stellt das Chrome DevTools Protocol auf Port 9222 bereit. Genau darum geht es beim Direktstart: Automatisierungs-Frameworks fügen Start-Switches hinzu, die sich selbst verraten, und ein dauerhaft laufender Endpunkt, den das Image startet, übergibt sie nie.

Die Standard-Persona ist eine kohärente native Linux-Identität, und diese Voreinstellung ist Absicht. Manches, was eine Seite auslesen kann, stammt vom Betriebssystem unter dem Browser: In einem Linux-Container übernimmt FreeType das Text-Shaping, und die Schriften kommen aus fontconfig, egal was der User-Agent behauptet. Auf diesem Image mit einer Windows-Persona gemessen, veränderte ein Schritt der Schriftgröße um 0,01 px die Textbreite bei 66 % der Schritte, gegenüber 99 % bei echtem Chrome unter Windows. Für eine Windows-Identität nutzen Sie den Windows-Build oder gehostete Browser, die auf Windows-Rechnern laufen.

Ein lizenzierter Container lädt seine Engine beim ersten Start herunter und bezieht eine Lease für gleichzeitige Browser. Er braucht deshalb ausgehenden Zugriff auf die Lizenz-API. Mounten Sie das Cache-Volume, damit die Engine einmal heruntergeladen wird und nicht von jedem neuen Container.

Was sich über CDP verbindet

ClientWie
Playwrightchromium.connect_over_cdp(url) / connectOverCDP(url)
Puppeteerpuppeteer.connect({ browserURL: url, defaultViewport: null })
browser-use · Crawl4AI · StagehandDie URL in ihrer Einstellung für den CDP-Endpunkt eintragen
Alles andere, was CDP sprichtDas rohe DevTools Protocol auf dem veröffentlichten Port

Wofür es eingesetzt wird

Scraper in Compose oder Kubernetes

Ein Browser-Service neben Ihren Workern, komplett über Umgebungsvariablen konfiguriert.

Agenten-Frameworks

Geben Sie browser-use, Crawl4AI oder Stagehand eine CDP-URL statt eines lokalen Chrome.

Reproduzierbare CI

Ein gepinnter Image-Tag gibt jedem Pipeline-Lauf denselben offenen Build; mit einem Lizenzschlüssel pinnt nur CC_VERSION in Pro den lizenzierten Build.

Jede Sprache

Alles mit einem CDP-Client, von Python und Node bis Go oder Rust, kann den Endpunkt steuern.

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 Docker-Image, serve() und der CDP-Endpunkt sind in jedem Tarif enthalten. Standardmäßig läuft im Image der offene Build; mit einem Lizenzschlüssel (kostenlos mit GitHub für jeweils einen Browser) läuft der neueste Build. Das Ein-Browser-Limit eines kostenlosen Schlüssels gilt über alle Ihre Container hinweg.

Tarife vergleichen

FAQ

Um welches Docker-Image geht es?

teamflatearth/clearcote auf Docker Hub, gebaut aus dem Dockerfile im öffentlichen Repository clearcote-browser. Mit docker pull teamflatearth/clearcote aktualisieren Sie eine ältere Kopie.

Ist es sicher, Port 9222 zu veröffentlichen?

Nur in einem Netzwerk, dem Sie vertrauen. Ein CDP-Endpunkt bedeutet volle Kontrolle über den Browser. Veröffentlichen Sie ihn nur lokal auf dem Host mit -p 127.0.0.1:9222:9222 oder halten Sie ihn in einem privaten Netzwerk – und machen Sie ihn nie auf einer öffentlichen Schnittstelle erreichbar.

Kann der Container eine Windows-Identität präsentieren?

Sie können CC_PLATFORM=windows setzen, aber Font-Metriken und Systemschriften kommen in einem Linux-Container weiterhin von Linux, und ein Fingerprint-Test bemerkt das. Die Standard-Linux-Persona ist kohärent. Für eine Windows-Identität nutzen Sie den Windows-Build unter Windows oder gehostete Browser.

Wie betreibe ich den lizenzierten Build in Docker?

Setzen Sie CLEARCOTE_LICENSE_KEY und mounten Sie ein Volume unter /opt/xdg-cache, damit die Engine nur einmal heruntergeladen wird. Nötig ist ein Image, das mit SDK 0.26.1 oder neuer gebaut wurde, für einen kostenlosen GitHub-Schlüssel 0.30.0 oder neuer. Das Startlog zeigt, welche Engine Sie bekommen haben und ob die Lizenz-Lease bezogen wurde.

Warum bleibt navigator.webdriver auf false?

Die Engine setzt den Wert nicht mehr anhand von --enable-automation, dem Switch, den Standard-Automatisierung verwendet, und das Image startet den Browser ohnehin ohne diesen Switch. Verbindet sich danach ein Client über CDP, ändert das nichts daran.

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.