Zum Inhalt springen

Von Fortress migrieren (BSD-Releases)

Wenn Sie eines der BSD-lizenzierten Releases von Fortress (v149, v150 oder v151) als CDP-Endpunkt betreiben, können Sie das Setup auf Clearcote umstellen, indem Sie ändern, wie der Browser startet. Der Code, der sich mit dem Endpunkt verbindet, bleibt gleich.

Fortress ist mit v3 (Chromium 153) am 30. September 2026 auf eine eigene Source-Available-Lizenz umgestiegen; die früheren Releases behalten ihre BSD-3-Lizenz. Dieser Leitfaden richtet sich an Teams auf einem dieser BSD-Releases, die lieber zu Clearcote wechseln als zu v3. Lizenzen, Preise und Plattformen im direkten Vergleich finden Sie unter Clearcote vs Fortress.

Was sich ändert

Sie starten Fortress mitStarten Sie Clearcote mit
Python: Fortress() aus tilion-fortress, dann f.cdp_urlserve() aus clearcote, dann srv.cdp_url
Node: Fortress.launch(), dann f.cdpUrlawait serve() aus clearcote, dann srv.cdpUrl
Docker: tilion/fortress:149, :150 oder :151 auf Port 9222teamflatearth/clearcote auf Port 9222
Der tilion-Launcher oder das Binary mit --remote-debugging-port=9222clearcote serve --port 9222

Alles nach dem Connect-Aufruf, also Ihr Code für Playwright, Puppeteer, browser-use, Crawl4AI oder Stagehand, bleibt, wie er ist. Eines sollten Sie vorher prüfen: Der Image-Tag tilion/fortress:latest zeigt seit dem 30. September 2026 auf v3. Ein Setup, das :latest zieht, läuft also nicht mehr auf einem BSD-Release. Pinnen Sie :149, :150 oder :151, bis Sie umgestellt haben.

Python und Node: serve()

serve() startet Clearcote mit den Launch-Einstellungen des SDK (Persona, Proxy, Standardwerte) und einem CDP-Endpunkt auf Loopback und gibt ein Handle mit der URL des Endpunkts zurück. Übergeben Sie port=9222, wenn anderer Code die alte Adresse erwartet; ohne diese Angabe wählt serve() einen freien Port.

# pip install -U clearcote
from clearcote import serve
from playwright.sync_api import sync_playwright

with serve(fingerprint="acct-1", port=9222) as srv:        # was: with Fortress() as f:
    with sync_playwright() as p:
        browser = p.chromium.connect_over_cdp(srv.cdp_url)  # was: f.cdp_url
        page = browser.contexts[0].new_page()               # the served profile
        page.goto("https://example.com")
        print(page.title())
        browser.close()                                     # disconnect before the with blocks end

close() stoppt den Browser, wartet, bis sein Prozess beendet ist, und entfernt das temporäre Profil, das serve() angelegt hat; in Python erledigt das der with-Block für Sie. Für browser-use, Crawl4AI oder Stagehand tragen Sie in deren CDP-Einstellung srv.cdp_url ein (Node: srv.cdpUrl). Das .NET-SDK bietet denselben Aufruf als ServeAsync. Mehr dazu unter Puppeteer und andere CDP-Clients.

Docker

Tauschen Sie das Image aus und behalten Sie den Port bei. Der Client verbindet sich mit derselben Adresse wie bisher.

bash
# was: docker run --rm -p 9222:9222 tilion/fortress:151
docker run -d --rm -p 127.0.0.1:9222:9222 -e CC_FINGERPRINT=acct-1 teamflatearth/clearcote

# the latest build: pass your key from the environment and keep the download in a volume
docker run -d --rm -p 127.0.0.1:9222:9222 -e CC_FINGERPRINT=acct-1 \
  -e CLEARCOTE_LICENSE_KEY -v clearcote-cache:/opt/xdg-cache teamflatearth/clearcote
python
browser = p.chromium.connect_over_cdp("http://localhost:9222")   # unchanged
page = browser.contexts[0].new_page()                            # the container's own profile

-p 127.0.0.1:9222:9222 hält den Endpunkt auf diesem Rechner: Ein CDP-Port bedeutet volle Kontrolle über den Browser, geben Sie ihn daher nur in Netzwerken frei, denen Sie vertrauen. Setzen Sie CC_FINGERPRINT, um eine Identität zu wählen oder wiederzuverwenden: Ohne die Variable bekommt ab sdk-0.39.0 jeder Container einen eigenen zufälligen Seed, ältere Images geben allen Containern denselben. Das Image wird vollständig über Umgebungsvariablen konfiguriert (Plattform, Sprache, Zeitzone, Proxy), die unter Deployment aufgeführt sind.

Aus der Shell: clearcote serve

Wenn Sie das Binary oder den tilion-Launcher selbst gestartet und Clients auf Port 9222 gerichtet haben, ist clearcote serve (in den Python- und Node-Paketen) der dauerhaft laufende Ersatz. Eine Verbindung ohne Parameter bekommt einen gemeinsam genutzten Standard-Browser, sodass bestehende Clients unverändert funktionieren; eine Verbindung kann aber auch über die URL eine eigene Identität anfordern.

bash
# was: tilion --headless=new --remote-debugging-port=9222 --user-data-dir=/tmp/p
clearcote serve --port 9222

#   connect_over_cdp("http://127.0.0.1:9222")                     # the shared default browser
#   connect_over_cdp("http://127.0.0.1:9222?fingerprint=acct-1")  # a browser of its own for acct-1

Was anders funktioniert

  • Die Identität kommt aus einem Seed. In den BSD-Releases wendet der Launcher von Fortress eine einzige kohärente Standard-Persona für Windows an, die Sie Merkmal für Merkmal mit --uxr-*-Switches ändern (--uxr-timezone, --uxr-languages, --uxr-screen-width, --uxr-canvas-seed usw.) oder über TILION_TZ / TILION_LANG. Clearcote leitet die gesamte Persona, einschließlich des Canvas- und WebGL-Rauschens pro Website, aus einem einzigen fingerprint-Seed ab, sodass derselbe Seed jedes Mal dieselbe Identität ergibt und ein neuer Seed eine davon unabhängige. Geben Sie jedem Account einen eigenen Seed, statt die --uxr-*-Werte einzeln zu übertragen; die Plattform setzen Sie mit platform, Zeitzone und Sprachen mit timezone und accept_language (Node: acceptLanguage), oder Sie lassen geoip sie passend zum Proxy setzen. Siehe Empfohlene Einstellungen.
  • Öffnen Sie Seiten im bereitgestellten Profil. Verwenden Sie browser.contexts[0] wie in den Beispielen. Verbinden Sie sich mit Puppeteer über defaultViewport: null, damit das Fenster die Größe behält, die ihm die Persona gegeben hat.
  • Geben Sie den Proxy an Clearcote, nicht an den Client. Übergeben Sie proxy an serve() oder --proxy an clearcote serve, und schalten Sie geoip ein, damit Zeitzone, Sprachen und WebRTC-Adresse zur Exit-IP passen. Ein Proxy mit Benutzername und Passwort braucht den neuesten Build; verwenden Sie mit dem offenen Build einen Proxy, der per IP autorisiert. Siehe Proxys & geoip.
  • Die eigenen Switches und Umgebungsvariablen von Fortress haben hier keine Wirkung. Die Optionen von Clearcote finden Sie unter Launch-Optionen und Fingerprint-Flags.
  • Menschenähnliche Eingaben sind eine launch()-Option. Sie laufen auf der Playwright-Seite und gelten daher nicht für einen Client, der über CDP verbunden ist.
  • Dieselben Plattformen wie die BSD-Releases: Windows x64 und Linux x64, und das Docker-Image ist x64.

Welchen Clearcote-Build Sie bekommen

Ohne Lizenzschlüssel laufen das SDK und das Image mit dem offenen Build: BSD-3, jeder Patch öffentlich und reproduzierbar, auf Chromium 150, kein Account nötig. Mit einem Schlüssel laufen sie mit dem neuesten Build (Chromium 154), der private Patches ergänzt: kostenlos mit GitHub für jeweils einen Browser, mit Pro für mehr. Speichern Sie den Schlüssel mit clearcote login oder setzen Sie CLEARCOTE_LICENSE_KEY; siehe Installation.

Den Wechsel prüfen

Wenn der Endpunkt läuft, fragen Sie ihn, was er ist:

bash
curl -s http://127.0.0.1:9222/json/version   # the browser behind the endpoint
clearcote info                                # SDK, licence, cached build and a launch test

clearcote info gibt den Build-Tag aus, den es ermittelt, sowie Launch test ok mit der genauen Browserversion. Das Setup-Runbook listet auf, welche Version jeder Build melden sollte und was zu tun ist, wenn eine Prüfung fehlschlägt.