openclaw browser
CLI und Skripting-Muster (Snapshots, Refs, Wartevorgänge, Debug-Flows).
Steuerungs-API (optional)
Nur für lokale Integrationen stellt der Gateway eine kleine Loopback-HTTP-API bereit. Dieser eigenständige Server ist opt-in — setzen Sie die UmgebungsvariableOPENCLAW_EAGER_BROWSER_CONTROL_SERVER=1 in der Gateway-Dienstumgebung
und starten Sie den Gateway neu, bevor die HTTP-Endpunkte verfügbar werden. Ohne
diese Variable funktioniert die Browser-Control-Runtime weiterhin über die CLI und
Agent-Tools, aber auf dem Loopback-Control-Port lauscht nichts.
- Status/Start/Stopp:
GET /,POST /start,POST /stop - Tabs:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/Screenshot:
GET /snapshot,POST /screenshot - Aktionen:
POST /navigate,POST /act - Hooks:
POST /hooks/file-chooser,POST /hooks/dialog - Downloads:
POST /download,POST /wait/download - Berechtigungen:
POST /permissions/grant - Debugging:
GET /console,POST /pdf - Debugging:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Netzwerk:
POST /response/body - Status:
GET /cookies,POST /cookies/set,POST /cookies/clear - Status:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Einstellungen:
POST /set/offline,POST /set/headers,POST /set/credentials,POST /set/geolocation,POST /set/media,POST /set/timezone,POST /set/locale,POST /set/device
?profile=<name>. POST /start?headless=true fordert einen
einmaligen Headless-Start für lokal verwaltete Profile an, ohne die persistierte
Browser-Konfiguration zu ändern; Attach-only-, Remote-CDP- und Existing-session-Profile lehnen
diese Überschreibung ab, weil OpenClaw diese Browser-Prozesse nicht startet.
Für Tab-Endpunkte ist targetId der Kompatibilitätsfeldname. Übergeben Sie bevorzugt
suggestedTargetId aus GET /tabs oder POST /tabs/open; Labels und tabId-
Handles wie t1 werden ebenfalls akzeptiert. Rohe CDP-Target-IDs und eindeutige rohe
Target-ID-Präfixe funktionieren weiterhin, sind aber flüchtige Diagnose-Handles.
Wenn Gateway-Auth mit gemeinsamem Geheimnis konfiguriert ist, erfordern Browser-HTTP-Routen ebenfalls Authentifizierung:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>oder HTTP Basic Auth mit diesem Passwort
- Diese eigenständige Loopback-Browser-API nutzt keine Trusted-Proxy- oder Tailscale-Serve-Identity-Header.
- Wenn
gateway.auth.modeaufnoneodertrusted-proxysteht, erben diese Loopback-Browser- Routen diese identitätstragenden Modi nicht; halten Sie sie ausschließlich auf Loopback beschränkt.
Fehlervertrag für /act
POST /act verwendet eine strukturierte Fehlerantwort für Validierung auf Routenebene und
Policy-Fehler:
code-Werte:
ACT_KIND_REQUIRED(HTTP 400):kindfehlt oder wird nicht erkannt.ACT_INVALID_REQUEST(HTTP 400): Aktions-Payload konnte nicht normalisiert oder validiert werden.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectorwurde mit einer nicht unterstützten Aktionsart verwendet.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(oderwait --fn) ist durch die Konfiguration deaktiviert.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdauf oberster Ebene oder in einem Batch kollidiert mit dem Anfrage-Target.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): Aktion wird für Existing-session-Profile nicht unterstützt.
{ "error": "<message>" } ohne
code-Feld zurückgeben.
Playwright-Anforderung
Einige Funktionen (Navigate/Act/AI-Snapshot/Role-Snapshot, Element-Screenshots, PDF) erfordern Playwright. Wenn Playwright nicht installiert ist, geben diese Endpunkte einen klaren 501-Fehler zurück. Was ohne Playwright weiterhin funktioniert:- ARIA-Snapshots
- Barrierefreiheits-Snapshots im Role-Stil (
--interactive,--compact,--depth,--efficient), wenn ein CDP-WebSocket pro Tab verfügbar ist. Dies ist ein Fallback für Inspektion und Ref-Ermittlung; Playwright bleibt die primäre Aktions-Engine. - Seiten-Screenshots für den verwalteten
openclaw-Browser, wenn ein CDP- WebSocket pro Tab verfügbar ist - Seiten-Screenshots für
existing-session- / Chrome-MCP-Profile - Ref-basierte
existing-session-Screenshots (--ref) aus Snapshot-Ausgaben
navigateact- AI-Snapshots, die vom nativen AI-Snapshot-Format von Playwright abhängen
- Element-Screenshots per CSS-Selector (
--element) - vollständiger Browser-PDF-Export
--full-page ab; die Route gibt fullPage is not supported for element screenshots zurück.
Wenn Sie Playwright is not available in this gateway build sehen, fehlt dem paketierten
Gateway die zentrale Browser-Runtime-Abhängigkeit. Installieren oder aktualisieren Sie
OpenClaw erneut und starten Sie dann den Gateway neu. Installieren Sie bei Docker außerdem die Chromium-
Browser-Binärdateien wie unten gezeigt.
Docker-Playwright-Installation
Wenn Ihr Gateway in Docker läuft, vermeiden Sienpx playwright (npm-Override-Konflikte).
Backen Sie Chromium bei eigenen Images in das Image ein:
PLAYWRIGHT_BROWSERS_PATH (zum Beispiel
/home/node/.cache/ms-playwright) und stellen Sie sicher, dass /home/node über
OPENCLAW_HOME_VOLUME oder einen Bind-Mount persistiert wird. OpenClaw erkennt das persistierte
Chromium unter Linux automatisch. Siehe Docker.
Funktionsweise (intern)
Ein kleiner Loopback-Control-Server akzeptiert HTTP-Anfragen und verbindet sich per CDP mit Chromium-basierten Browsern. Erweiterte Aktionen (Klick/Tippen/Snapshot/PDF) laufen über Playwright auf CDP; wenn Playwright fehlt, sind nur Nicht-Playwright-Operationen verfügbar. Der Agent sieht eine stabile Schnittstelle, während lokale/entfernte Browser und Profile darunter frei ausgetauscht werden.CLI-Kurzreferenz
Alle Befehle akzeptieren--browser-profile <name>, um ein bestimmtes Profil anzusteuern, und --json für maschinenlesbare Ausgabe.
Basics: status, tabs, open/focus/close
Basics: status, tabs, open/focus/close
Inspection: screenshot, snapshot, console, errors, requests
Inspection: screenshot, snapshot, console, errors, requests
uploadunddialogsind Aktivierungs-Aufrufe; führen Sie sie vor dem Klick/Tastendruck aus, der den Chooser/Dialog auslöst. Wenn eine Aktion ein Modal öffnet, enthält die AktionsantwortblockedByDialogundbrowserState.dialogs.pending; übergeben Sie diesedialogId, um direkt zu antworten. Außerhalb von OpenClaw behandelte Dialoge erscheinen unterbrowserState.dialogs.recent.click/type/usw. erfordern einerefaussnapshot(numerisch12, Role-Refe12oder ausführbare ARIA-Refax12). CSS-Selektoren werden für Aktionen bewusst nicht unterstützt. Verwenden Sieclick-coords, wenn die sichtbare Viewport-Position das einzige zuverlässige Ziel ist.- Download- und Trace-Pfade sind auf OpenClaw-Temp-Roots beschränkt:
/tmp/openclaw{,/downloads}(Fallback:${os.tmpdir()}/openclaw/...). uploadakzeptiert Dateien aus dem OpenClaw-Temp-Uploads-Root und von OpenClaw verwaltete eingehende Medien. Verwaltete eingehende Medien können alsmedia://inbound/<id>, sandbox-relativesmedia/inbound/<id>oder als aufgelöster Pfad innerhalb des verwalteten Verzeichnisses für eingehende Medien referenziert werden. Verschachtelte Media-Refs, Traversal, Symlinks, Hardlinks und beliebige lokale Pfade werden weiterhin abgelehnt.uploadkann Datei-Eingaben auch direkt über--input-refoder--elementsetzen.
suggestedTargetId aus tabs in Skripten.
Snapshot-Flags auf einen Blick:
--format ai(Standard mit Playwright): AI-Snapshot mit numerischen Referenzen (aria-ref="<n>").--format aria: Accessibility-Baum mitaxN-Referenzen. Wenn Playwright verfügbar ist, bindet OpenClaw Referenzen mit Backend-DOM-IDs an die Live-Seite, sodass Folgeaktionen sie verwenden können; andernfalls ist die Ausgabe nur zur Inspektion gedacht.--efficient(oder--mode efficient): kompaktes Rollen-Snapshot-Preset. Setzen Siebrowser.snapshotDefaults.mode: "efficient", um dies zum Standard zu machen (siehe Gateway-Konfiguration).--interactive,--compact,--depth,--selectorerzwingen einen Rollen-Snapshot mitref=e12-Referenzen.--frame "<iframe>"begrenzt Rollen-Snapshots auf ein Iframe.- Mit Playwright fügt
--labelseinen Screenshot mit überlagerten Referenzlabels hinzu (gibtMEDIA:<path>aus) sowie einannotations-Array mit der Bounding Box jeder Referenz. Beiscreenshotfunktionieren Playwright-gestützte Labels mit--full-page,--refund--element; beisnapshotbleibt der begleitende Screenshot auf den Viewport beschränkt. Existing-Session-/chrome-mcp-Profile rendern Overlay-Labels auf Seitenscreenshots, geben aber keineannotationszurück und verwenden nicht den Playwright- Projektionshelfer für ganze Seite/Referenz/Element. Ohne Playwright oder chrome-mcp sind gelabelte Screenshots nicht verfügbar. --urlshängt erkannte Linkziele an AI-Snapshots an.
Snapshots und Referenzen
OpenClaw unterstützt zwei „Snapshot“-Stile:-
AI-Snapshot (numerische Referenzen):
openclaw browser snapshot(Standard;--format ai)- Ausgabe: ein Text-Snapshot, der numerische Referenzen enthält.
- Aktionen:
openclaw browser click 12,openclaw browser type 23 "hello". - Intern wird die Referenz über Playwrights
aria-refaufgelöst.
-
Rollen-Snapshot (Rollenreferenzen wie
e12):openclaw browser snapshot --interactive(oder--compact,--depth,--selector,--frame)- Ausgabe: eine rollenbasierte Liste/ein rollenbasierter Baum mit
[ref=e12](und optional[nth=1]). - Aktionen:
openclaw browser click e12,openclaw browser highlight e12. - Intern wird die Referenz über
getByRole(...)aufgelöst (plusnth()bei Duplikaten). - Fügen Sie
--labelshinzu, um einen Screenshot mit überlagertene12-Labels einzuschließen. Bei Playwright-gestützten Profilen gibt dies außerdem Bounding-Box-Metadaten pro Referenz zurück (annotations[]). - Fügen Sie
--urlshinzu, wenn Linktext mehrdeutig ist und der Agent konkrete Navigationsziele benötigt.
- Ausgabe: eine rollenbasierte Liste/ein rollenbasierter Baum mit
-
ARIA-Snapshot (ARIA-Referenzen wie
ax12):openclaw browser snapshot --format aria- Ausgabe: der Accessibility-Baum als strukturierte Knoten.
- Aktionen:
openclaw browser click ax12funktioniert, wenn der Snapshot-Pfad die Referenz über Playwright und Chrome-Backend-DOM-IDs binden kann.
-
Wenn Playwright nicht verfügbar ist, können ARIA-Snapshots weiterhin für die
Inspektion nützlich sein, aber Referenzen sind möglicherweise nicht ausführbar. Erstellen Sie erneut einen Snapshot mit
--format aioder--interactive, wenn Sie Aktionsreferenzen benötigen. -
Docker-Nachweis für den Raw-CDP-Fallback-Pfad:
pnpm test:docker:browser-cdp-snapshotstartet Chromium mit CDP, führtbrowser doctor --deepaus und verifiziert, dass Rollen- Snapshots Link-URLs, zu Cursors hochgestufte klickbare Elemente und Iframe-Metadaten enthalten.
- Referenzen sind nicht stabil über Navigationen hinweg; wenn etwas fehlschlägt, führen Sie
snapshoterneut aus und verwenden Sie eine frische Referenz. /actgibt nach aktionsausgelöstem Austausch die aktuelle rohetargetIdzurück, wenn der Austausch-Tab nachgewiesen werden kann. Verwenden Sie für Folgebefehle weiterhin stabile Tab-IDs/-Labels.- Wenn der Rollen-Snapshot mit
--frameaufgenommen wurde, sind Rollenreferenzen bis zum nächsten Rollen-Snapshot auf dieses Iframe begrenzt. - Unbekannte oder veraltete
axN-Referenzen schlagen schnell fehl, statt auf Playwrightsaria-ref-Selector zurückzufallen. Führen Sie in diesem Fall einen frischen Snapshot im selben Tab aus.
Wait-Erweiterungen
Sie können auf mehr warten als nur Zeit/Text:- Auf URL warten (Globs werden von Playwright unterstützt):
openclaw browser wait --url "**/dash"
- Auf Ladezustand warten:
openclaw browser wait --load networkidle- Unterstützt auf verwalteten
openclaw- und Raw-/Remote-CDP-Profilen. Die Profileuserundexisting-sessionlehnennetworkidleab; verwenden Sie dort--url,--text, einen Selector oder--fn-Wartebedingungen.
- Auf ein JS-Prädikat warten:
openclaw browser wait --fn "window.ready===true"
- Darauf warten, dass ein Selector sichtbar wird:
openclaw browser wait "#main"
Debug-Workflows
Wenn eine Aktion fehlschlägt (z. B. „not visible“, „strict mode violation“, „covered“):openclaw browser snapshot --interactive- Verwenden Sie
click <ref>/type <ref>(bevorzugen Sie Rollenreferenzen im interaktiven Modus) - Wenn es weiterhin fehlschlägt:
openclaw browser highlight <ref>, um zu sehen, worauf Playwright zielt - Wenn sich die Seite ungewöhnlich verhält:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Für tiefgehendes Debugging: zeichnen Sie einen Trace auf:
openclaw browser trace start- Reproduzieren Sie das Problem
openclaw browser trace stop(gibtTRACE:<path>aus)
JSON-Ausgabe
--json ist für Skripting und strukturierte Tools gedacht.
Beispiele:
refs sowie einen kleinen stats-Block (Zeilen/Zeichen/Referenzen/interaktiv), damit Tools über Payload-Größe und Dichte entscheiden können.
Zustands- und Umgebungsoptionen
Diese sind für Workflows nach dem Muster „die Site soll sich wie X verhalten“ nützlich:- Cookies:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Header:
set headers --headers-json '{"X-Debug":"1"}'(das Legacy-Formatset headers --json '{"X-Debug":"1"}'wird weiterhin unterstützt) - HTTP-Basic-Auth:
set credentials user pass(oder--clear) - Geolokalisierung:
set geo <lat> <lon> --origin "https://example.com"(oder--clear) - Medien:
set media dark|light|no-preference|none - Zeitzone / Locale:
set timezone ...,set locale ... - Gerät / Viewport:
set device "iPhone 14"(Playwright-Geräte-Presets)set viewport 1280 720
Sicherheit und Datenschutz
- Das openclaw-Browserprofil kann angemeldete Sitzungen enthalten; behandeln Sie es als sensibel.
browser act kind=evaluate/openclaw browser evaluateundwait --fnführen beliebiges JavaScript im Seitenkontext aus. Prompt Injection kann dies steuern. Deaktivieren Sie es mitbrowser.evaluateEnabled=false, wenn Sie es nicht benötigen.openclaw browser evaluate --fnakzeptiert eine Funktionsquelle, einen Ausdruck oder einen Anweisungsrumpf. Anweisungsrümpfe werden als Async-Funktionen umschlossen; verwenden Sie daherreturnfür den Wert, den Sie zurückerhalten möchten. Verwenden Sie--timeout-ms <ms>, wenn die seitenseitige Funktion länger als das Standard-Evaluate-Timeout benötigen kann.- Hinweise zu Logins und Anti-Bot-Themen (X/Twitter usw.) finden Sie unter Browser-Login + X/Twitter-Posting.
- Halten Sie den Gateway-/Node-Host privat (local loopback oder nur tailnet).
- Remote-CDP-Endpunkte sind mächtig; tunneln und schützen Sie sie.
Verwandte Themen
- Browser - Übersicht, Konfiguration, Profile, Sicherheit
- Browser-Login - Anmeldung bei Sites
- Browser-Linux-Fehlerbehebung
- Browser-WSL2-Fehlerbehebung