openclaw browser
und Skriptmuster (Snapshots, Refs, Waits, Debug-Abläufe).
Control-API (optional)
Nur für lokale Integrationen stellt das Gateway eine kleine loopback-HTTP-API bereit:- Status/Start/Stop:
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 - Debugging:
GET /console,POST /pdf - Debugging:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Netzwerk:
POST /response/body - Zustand:
GET /cookies,POST /cookies/set,POST /cookies/clear - Zustand:
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>.
Wenn Gateway-Auth mit gemeinsamem Secret konfiguriert ist, erfordern Browser-HTTP-Routen ebenfalls Auth:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>oder HTTP Basic Auth mit diesem Passwort
- Diese eigenständige loopback-Browser-API verarbeitet keine Trusted-Proxy- oder Tailscale-Serve-Identitäts-Header.
- Wenn
gateway.auth.modenoneodertrusted-proxyist, übernehmen diese loopback-Browser- Routen diese identitätsführenden Modi nicht; halten Sie sie nur auf Loopback.
Fehlervertrag von /act
POST /act verwendet eine strukturierte Fehlerantwort für Validierung auf Routenebene und
Fehler bei Richtlinien:
code:
ACT_KIND_REQUIRED(HTTP 400):kindfehlt oder wird nicht erkannt.ACT_INVALID_REQUEST(HTTP 400): Die Action-Payload hat die Normalisierung oder Validierung nicht bestanden.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectorwurde mit einer nicht unterstützten Action-Art verwendet.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(oderwait --fn) ist per Konfiguration deaktiviert.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdauf oberster Ebene oder in einem Batch kollidiert mit dem Ziel der Anfrage.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): Action wird für Profile mit bestehender Sitzung nicht unterstützt.
{ "error": "<message>" } ohne Feld
code 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 Fehler 501 zurück. Was ohne Playwright weiterhin funktioniert:- ARIA-Snapshots
- Seiten-Screenshots für den verwalteten
openclaw-Browser, wenn ein CDP- WebSocket pro Tab verfügbar ist - Seiten-Screenshots für Profile
existing-session/ Chrome MCP - Refs-basierte Screenshots (
--ref) fürexisting-sessionaus Snapshot-Ausgaben
navigateact- AI-Snapshots / Role-Snapshots
- CSS-Selector-Element-Screenshots (
--element) - vollständiger PDF-Export des Browsers
--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, reparieren Sie
die Laufzeitabhängigkeiten des gebündelten Browser-Plugins, sodass playwright-core installiert ist,
und starten Sie dann das Gateway neu. Führen Sie bei paketierten Installationen openclaw doctor --fix aus.
Installieren Sie für Docker zusätzlich die Chromium-Browser-Binärdateien wie unten gezeigt.
Playwright-Installation in Docker
Wenn Ihr Gateway in Docker läuft, vermeiden Sienpx playwright (Konflikte mit npm-Overrides).
Verwenden Sie stattdessen die gebündelte CLI:
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. Siehe Docker.
Wie es funktioniert (intern)
Ein kleiner loopback-Control-Server akzeptiert HTTP-Anfragen und verbindet sich über CDP mit Chromium-basierten Browsern. Erweiterte Aktionen (click/type/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.Kurze CLI-Referenz
Alle Befehle akzeptieren--browser-profile <name>, um ein bestimmtes Profil anzusprechen, sowie --json für maschinenlesbare Ausgabe.
Grundlagen: status, tabs, open/focus/close
Grundlagen: status, tabs, open/focus/close
Inspektion: screenshot, snapshot, console, errors, requests
Inspektion: screenshot, snapshot, console, errors, requests
Aktionen: navigate, click, type, drag, wait, evaluate
Aktionen: navigate, click, type, drag, wait, evaluate
Zustand: cookies, storage, offline, headers, geo, device
Zustand: cookies, storage, offline, headers, geo, device
uploadunddialogsind arming-Aufrufe; führen Sie sie vor dem click/press aus, das den Datei-Chooser/Dialog auslöst.click/type/etc. erfordern einerefaussnapshot(numerisch12oder Role-Refe12). CSS-Selectoren werden für Aktionen absichtlich nicht unterstützt.- Pfade für Download, Trace und Upload sind auf temporäre OpenClaw-Roots beschränkt:
/tmp/openclaw{,/downloads,/uploads}(Fallback:${os.tmpdir()}/openclaw/...). uploadkann Dateieingaben auch direkt über--input-refoder--elementsetzen.
--format ai(Standard mit Playwright): AI-Snapshot mit numerischen Refs (aria-ref="<n>").--format aria: Accessibility-Tree, keine Refs; nur zur Inspektion.--efficient(oder--mode efficient): kompaktes Preset für Role-Snapshots. Setzen Siebrowser.snapshotDefaults.mode: "efficient", um dies zum Standard zu machen (siehe Gateway-Konfiguration).--interactive,--compact,--depth,--selectorerzwingen einen Role-Snapshot mit Refs vom Typref=e12.--frame "<iframe>"begrenzt Role-Snapshots auf ein iframe.--labelsfügt einen Screenshot nur des Viewports mit überlagerten Ref-Labels hinzu (gibtMEDIA:<path>aus).
Snapshots und Refs
OpenClaw unterstützt zwei Arten von „Snapshots“:-
AI-Snapshot (numerische Refs):
openclaw browser snapshot(Standard;--format ai)- Ausgabe: ein Text-Snapshot, der numerische Refs enthält.
- Aktionen:
openclaw browser click 12,openclaw browser type 23 "hello". - Intern wird die Ref über Playwrights
aria-refaufgelöst.
-
Role-Snapshot (Role-Refs wie
e12):openclaw browser snapshot --interactive(oder--compact,--depth,--selector,--frame)- Ausgabe: eine rollenbasierte Liste/Baumstruktur mit
[ref=e12](und optional[nth=1]). - Aktionen:
openclaw browser click e12,openclaw browser highlight e12. - Intern wird die Ref über
getByRole(...)(plusnth()bei Duplikaten) aufgelöst. - Fügen Sie
--labelshinzu, um einen Viewport-Screenshot mit überlagertene12-Labels einzuschließen.
- Ausgabe: eine rollenbasierte Liste/Baumstruktur mit
- Refs sind über Navigationen hinweg nicht stabil; wenn etwas fehlschlägt, führen Sie
snapshoterneut aus und verwenden Sie eine frische Ref. - Wenn der Role-Snapshot mit
--frameaufgenommen wurde, sind Role-Refs bis zum nächsten Role-Snapshot auf dieses iframe beschränkt.
Erweiterte Wait-Funktionen
Sie können auf mehr als nur Zeit/Text warten:- Auf URL warten (Globs werden von Playwright unterstützt):
openclaw browser wait --url "**/dash"
- Auf Ladezustand warten:
openclaw browser wait --load networkidle
- 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-Abläufe
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 Role-Refs im interaktiven Modus) - Falls es weiterhin fehlschlägt:
openclaw browser highlight <ref>, um zu sehen, worauf Playwright zielt - Wenn sich die Seite merkwürdig verhält:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Für tiefes Debugging: eine Trace aufzeichnen:
openclaw browser trace start- Problem reproduzieren
openclaw browser trace stop(gibtTRACE:<path>aus)
JSON-Ausgabe
--json ist für Skripting und strukturierte Tooling-Fälle gedacht.
Beispiele:
refs plus einen kleinen Block stats (lines/chars/refs/interactive), damit Tools über Payload-Größe und -Dichte nachdenken können.
Zustands- und Umgebungsparameter
Diese sind nützlich für Workflows vom Typ „die Website soll sich wie X verhalten“:- 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"}'(Legacyset headers --json '{"X-Debug":"1"}'wird weiterhin unterstützt) - HTTP Basic Auth:
set credentials user pass(oder--clear) - Geolocation:
set geo <lat> <lon> --origin "https://example.com"(oder--clear) - Media:
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 Browser-Profil
openclawkann 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.- Für Logins und Hinweise zu Anti-Bot-Mechanismen (X/Twitter usw.) siehe Browser-Login + X/Twitter-Posting.
- Halten Sie den Gateway-/Node-Host privat (nur Loopback oder nur Tailnet).
- Entfernte CDP-Endpunkte sind mächtig; tunneln und schützen Sie sie.
Verwandt
- Browser — Überblick, Konfiguration, Profile, Sicherheit
- Browser-Login — bei Websites anmelden
- Fehlerbehebung für Browser unter Linux
- Fehlerbehebung für Browser unter WSL2