1 ADR-Browser-Identity-Playwright
Forgeagent edited this page 2026-07-20 10:25:03 +02:00

ADR: Browser-Identität und Playwright

Kontext

Neben dem chromedp-Default braucht es realistische Browser-Identität/Stealth ohne caller-supplied JavaScript sowie ein optionales Playwright-Backend ohne Änderung der MCP-Tool-Schemas oder Abschwächung der Netzwerk-Policy.

Entscheidung

Wählbares Backend

browser.backend ist chromedp (Default) oder playwright. Beide erfüllen browserexec.Executor. MCP-Schemas und Tunnel-Payloads bleiben backend-neutral.

Gemeinsame Identität und Stealth

Repository-eigene Profile (chrome-desktop, mobile-chrome) setzen Viewport, Locale, Accept-Language, Platform sowie User-Agent/Client-Hints passend zur gepinnten Chromium-Version. browser_open akzeptiert optionales allowlisted client_profile.

Bei browser.stealth (Default true, solange Browser aktiv):

  • Chromium mit --headless=new und --disable-blink-features=AutomationControlled;
  • festes Init-Skript vor Navigation gegen navigator.webdriver u. ä.;
  • konsistente User-Agent-/Client-Hints-Overrides.

Stealth umgeht weder http.network_policy, Loopback-Egress, Tab-Limits, Download-Verbot noch Session-Isolation.

Playwright-Sidecar

Playwright läuft als unprivilegierter Child-Prozess über stdio-JSON-RPC:

  • gleiches Chromium executable_path / Versions-Pin;
  • HTTP(S) über den Go-eigenen Loopback-Egress-Proxy;
  • ein Tab pro isoliertem Context, Downloads verboten;
  • kein CDP-/Playwright-/MCP-Listener an einer Netzwerkschnittstelle.

Folgen

  • chromedp bleibt Zero-Extra-Runtime-Default.
  • Playwright bringt Node-Supply-Chain und Sidecar-Lifecycle auf dem Proxy-Host.
  • Setup-Anleitungen decken Linux, macOS und Windows ab (setup-help, Browser-Tools-Doku).
  • Firefox/WebKit bleiben außerhalb des Scope.