Browser (von openclaw verwaltet)
OpenClaw kann ein dediziertes Chrome-/Brave-/Edge-/Chromium-Profil ausführen, das der Agent steuert. Es ist von Ihrem persönlichen Browser isoliert und wird über einen kleinen lokalen Steuerungsdienst innerhalb des Gateway verwaltet (nur Loopback). Sicht für Einsteiger:- Stellen Sie es sich als einen separaten, nur für Agenten bestimmten Browser vor.
- Das Profil
openclawberührt nicht Ihr persönliches Browserprofil. - Der Agent kann in einem sicheren Bereich Tabs öffnen, Seiten lesen, klicken und tippen.
- Das integrierte Profil
userwird über Chrome MCP an Ihre echte angemeldete Chrome-Sitzung angehängt.
Was Sie erhalten
- Ein separates Browserprofil namens openclaw (standardmäßig mit orangem Akzent).
- Deterministische Tab-Steuerung (auflisten/öffnen/fokussieren/schließen).
- Agentenaktionen (klicken/tippen/ziehen/auswählen), Snapshots, Screenshots, PDFs.
- Optionale Unterstützung mehrerer Profile (
openclaw,work,remote, …).
Schnellstart
openclaw browser vollständig fehlt oder der Agent meldet, dass das Browser-Tool
nicht verfügbar ist, springen Sie zu Missing browser command or tool.
Plugin-Steuerung
Das Standard-browser-Tool ist jetzt ein gebündeltes Plugin, das standardmäßig
aktiviert ist. Das bedeutet, dass Sie es deaktivieren oder ersetzen können, ohne den Rest des
Plugin-Systems von OpenClaw zu entfernen:
browser bereitstellt. Die Standard-Browser-Erfahrung benötigt beides:
plugins.entries.browser.enablednicht deaktiviertbrowser.enabled=true
openclaw browser),
die Gateway-Methode (browser.request), das Agenten-Tool und der Standard-Browser-Steuerungsdienst
gemeinsam. Ihre browser.*-Konfiguration bleibt für ein
Ersatz-Plugin erhalten.
Das gebündelte Browser-Plugin besitzt jetzt auch die Browser-Laufzeitimplementierung.
Der Core behält nur gemeinsame Plugin-SDK-Helfer sowie Kompatibilitäts-Re-Exporte für
ältere interne Importpfade. In der Praxis bedeutet das: Das Entfernen oder Ersetzen des Browser-
Plugin-Pakets entfernt den Funktionsumfang des Browsers, anstatt eine zweite
Core-eigene Laufzeit zurückzulassen.
Änderungen an der Browser-Konfiguration erfordern weiterhin einen Gateway-Neustart, damit das gebündelte Plugin
seinen Browser-Dienst mit den neuen Einstellungen erneut registrieren kann.
Fehlender Browser-Befehl oder fehlendes Tool
Wennopenclaw browser nach einem Upgrade plötzlich ein unbekannter Befehl ist oder
der Agent meldet, dass das Browser-Tool fehlt, ist die häufigste Ursache eine
restriktive plugins.allow-Liste, die browser nicht enthält.
Beispiel für eine fehlerhafte Konfiguration:
browser zur Plugin-Allowlist hinzufügen:
browser.enabled=truereicht für sich allein nicht aus, wennplugins.allowgesetzt ist.plugins.entries.browser.enabled=truereicht für sich allein ebenfalls nicht aus, wennplugins.allowgesetzt ist.tools.alsoAllow: ["browser"]lädt das gebündelte Browser-Plugin nicht. Es passt nur die Tool-Richtlinie an, nachdem das Plugin bereits geladen wurde.- Wenn Sie keine restriktive Plugin-Allowlist benötigen, stellt das Entfernen von
plugins.allowebenfalls das standardmäßige Verhalten des gebündelten Browsers wieder her.
openclaw browserist ein unbekannter Befehl.browser.requestfehlt.- Der Agent meldet das Browser-Tool als nicht verfügbar oder fehlend.
Profile: openclaw vs user
openclaw: verwalteter, isolierter Browser (keine Erweiterung erforderlich).user: integriertes Profil zum Anhängen an Chrome MCP für Ihre echte angemeldete Chrome- Sitzung.
- Standard: Verwenden Sie den isolierten Browser
openclaw. - Bevorzugen Sie
profile="user", wenn bereits angemeldete Sitzungen wichtig sind und der Benutzer am Computer ist, um auf einen Anhänge-Prompt zu klicken oder ihn zu genehmigen. profileist die explizite Überschreibung, wenn Sie einen bestimmten Browsermodus möchten.
browser.defaultProfile: "openclaw", wenn Sie standardmäßig den verwalteten Modus verwenden möchten.
Konfiguration
Die Browser-Einstellungen befinden sich in~/.openclaw/openclaw.json.
- Der Browser-Steuerungsdienst bindet an Loopback auf einem aus
gateway.portabgeleiteten Port (Standard:18791, also Gateway + 2). - Wenn Sie den Gateway-Port überschreiben (
gateway.portoderOPENCLAW_GATEWAY_PORT), verschieben sich die abgeleiteten Browser-Ports, damit sie in derselben „Familie“ bleiben. cdpUrlverwendet standardmäßig den verwalteten lokalen CDP-Port, wenn es nicht gesetzt ist.remoteCdpTimeoutMsgilt für Erreichbarkeitsprüfungen von Remote-CDP (nicht Loopback).remoteCdpHandshakeTimeoutMsgilt für Erreichbarkeitsprüfungen des WebSocket-Handshakes von Remote-CDP.- Browser-Navigation/Öffnen von Tabs ist vor der Navigation durch SSRF-Schutz abgesichert und wird nach der Navigation nach bestem Aufwand anhand der endgültigen
http(s)-URL erneut geprüft. - Im strikten SSRF-Modus werden auch Erkennung/Sondierungen von Remote-CDP-Endpunkten (
cdpUrl, einschließlich Abfragen von/json/version) geprüft. browser.ssrfPolicy.dangerouslyAllowPrivateNetworkist standardmäßig deaktiviert. Setzen Sie es nur dann auftrue, wenn Sie absichtlich privaten Netzwerkzugriff per Browser vertrauen.browser.ssrfPolicy.allowPrivateNetworkbleibt als Legacy-Alias aus Kompatibilitätsgründen unterstützt.attachOnly: truebedeutet „niemals einen lokalen Browser starten; nur anhängen, wenn er bereits läuft.“color+ profilspezifischescolortönen die Browser-UI, damit Sie sehen können, welches Profil aktiv ist.- Das Standardprofil ist
openclaw(eigenständiger, von OpenClaw verwalteter Browser). Verwenden SiedefaultProfile: "user", um sich für den angemeldeten Benutzerbrowser zu entscheiden. - Reihenfolge der automatischen Erkennung: Systemstandardbrowser, wenn Chromium-basiert; sonst Chrome → Brave → Edge → Chromium → Chrome Canary.
- Lokale
openclaw-Profile weisencdpPort/cdpUrlautomatisch zu — setzen Sie diese nur für Remote-CDP. driver: "existing-session"verwendet Chrome DevTools MCP statt rohem CDP. Setzen Sie für diesen Treiber nichtcdpUrl.- Setzen Sie
browser.profiles.<name>.userDataDir, wenn ein Profil mit existing-session an ein nicht standardmäßiges Chromium-Benutzerprofil wie Brave oder Edge angehängt werden soll.
Brave verwenden (oder einen anderen Chromium-basierten Browser)
Wenn Ihr Systemstandardbrowser Chromium-basiert ist (Chrome/Brave/Edge/usw.), verwendet OpenClaw ihn automatisch. Setzen Siebrowser.executablePath, um die
automatische Erkennung zu überschreiben:
CLI-Beispiel:
Lokale vs. Remote-Steuerung
- Lokale Steuerung (Standard): Das Gateway startet den Loopback-Steuerungsdienst und kann einen lokalen Browser starten.
- Remote-Steuerung (Node-Host): Führen Sie einen Node-Host auf dem Rechner aus, der den Browser hat; das Gateway leitet Browser-Aktionen an ihn weiter.
- Remote-CDP: Setzen Sie
browser.profiles.<name>.cdpUrl(oderbrowser.cdpUrl), um sich an einen Remote-Chromium-basierten Browser anzuhängen. In diesem Fall startet OpenClaw keinen lokalen Browser.
- lokal verwaltete Profile:
openclaw browser stopstoppt den Browserprozess, den OpenClaw gestartet hat - reine Attach-only- und Remote-CDP-Profile:
openclaw browser stopschließt die aktive Steuerungssitzung und gibt Playwright-/CDP-Emulationsüberschreibungen frei (Viewport, Farbschema, Gebietsschema, Zeitzone, Offline-Modus und ähnlicher Zustand), auch wenn kein Browserprozess von OpenClaw gestartet wurde
- Query-Tokens (z. B.
https://provider.example?token=<token>) - HTTP-Basic-Auth (z. B.
https://user:pass@provider.example)
/json/*-Endpunkten und beim Verbinden
mit dem CDP-WebSocket bei. Bevorzugen Sie Umgebungsvariablen oder Secret-Manager für
Tokens, statt sie in Konfigurationsdateien festzuschreiben.
Node-Browser-Proxy (Zero-Config-Standard)
Wenn Sie einen Node-Host auf dem Rechner ausführen, der Ihren Browser hat, kann OpenClaw Browser-Tool-Aufrufe automatisch ohne zusätzliche Browser-Konfiguration an diesen Node weiterleiten. Dies ist der Standardpfad für Remote-Gateways. Hinweise:- Der Node-Host stellt seinen lokalen Browser-Steuerungsserver über einen Proxy-Befehl bereit.
- Profile stammen aus der eigenen
browser.profiles-Konfiguration des Nodes (wie lokal). nodeHost.browserProxy.allowProfilesist optional. Lassen Sie es leer, um das Legacy-/Standardverhalten zu erhalten: Alle konfigurierten Profile bleiben über die Proxy-Oberfläche erreichbar, einschließlich Routen zum Erstellen/Löschen von Profilen.- Wenn Sie
nodeHost.browserProxy.allowProfilessetzen, behandelt OpenClaw dies als Least-Privilege-Grenze: Nur in der Allowlist aufgeführte Profile können adressiert werden, und Routen zum Erstellen/Löschen persistenter Profile werden auf der Proxy-Oberfläche blockiert. - Deaktivieren Sie es, wenn Sie es nicht möchten:
- Auf dem Node:
nodeHost.browserProxy.enabled=false - Auf dem Gateway:
gateway.nodes.browser.mode="off"
- Auf dem Node:
Browserless (gehostetes Remote-CDP)
Browserless ist ein gehosteter Chromium-Dienst, der CDP-Verbindungs-URLs über HTTPS und WebSocket bereitstellt. OpenClaw kann beide Formen verwenden, aber für ein Remote-Browserprofil ist die direkte WebSocket-URL aus der Browserless-Dokumentation zur Verbindung die einfachste Option. Beispiel:- Ersetzen Sie
<BROWSERLESS_API_KEY>durch Ihr echtes Browserless-Token. - Wählen Sie den Regionsendpunkt, der zu Ihrem Browserless-Konto passt (siehe deren Dokumentation).
- Wenn Browserless Ihnen eine HTTPS-Basis-URL gibt, können Sie sie entweder für eine direkte CDP-Verbindung in
wss://umwandeln oder die HTTPS-URL beibehalten und OpenClaw/json/versionerkennen lassen.
Direkte WebSocket-CDP-Anbieter
Einige gehostete Browser-Dienste stellen einen direkten WebSocket-Endpunkt statt der standardmäßigen HTTP-basierten CDP-Erkennung (/json/version) bereit. OpenClaw unterstützt beides:
- HTTP(S)-Endpunkte — OpenClaw ruft
/json/versionauf, um die WebSocket-Debugger-URL zu ermitteln, und verbindet sich dann. - WebSocket-Endpunkte (
ws:///wss://) — OpenClaw verbindet sich direkt und überspringt/json/version. Verwenden Sie dies für Dienste wie Browserless, Browserbase oder jeden Anbieter, der Ihnen eine WebSocket-URL gibt.
Browserbase
Browserbase ist eine Cloud-Plattform zum Ausführen von Headless-Browsern mit integrierter CAPTCHA-Lösung, Stealth-Modus und Residential- Proxys.- Registrieren Sie sich und kopieren Sie Ihren API Key aus dem Overview-Dashboard.
- Ersetzen Sie
<BROWSERBASE_API_KEY>durch Ihren echten Browserbase-API-Schlüssel. - Browserbase erstellt beim WebSocket-Verbindungsaufbau automatisch eine Browser-Sitzung, daher ist kein manueller Schritt zum Erstellen einer Sitzung erforderlich.
- Die kostenlose Stufe erlaubt eine gleichzeitige Sitzung und eine Browser-Stunde pro Monat. Siehe pricing für die Limits kostenpflichtiger Tarife.
- In den Browserbase-Dokumenten finden Sie die vollständige API- Referenz, SDK-Anleitungen und Integrationsbeispiele.
Sicherheit
Wichtige Grundsätze:- Die Browser-Steuerung ist nur über Loopback erreichbar; der Zugriff läuft über die Authentifizierung des Gateway oder das Node-Pairing.
- Die eigenständige Loopback-Browser-HTTP-API verwendet nur Authentifizierung mit gemeinsamem Secret:
Bearer-Authentifizierung mit Gateway-Token,
x-openclaw-passwordoder HTTP Basic Auth mit dem konfigurierten Gateway-Passwort. - Tailscale-Serve-Identitäts-Header und
gateway.auth.mode: "trusted-proxy"authentifizieren diese eigenständige Loopback-Browser-API nicht. - Wenn die Browser-Steuerung aktiviert ist und keine Authentifizierung mit gemeinsamem Secret konfiguriert ist, generiert OpenClaw
beim Start automatisch
gateway.auth.tokenund speichert es in der Konfiguration. - OpenClaw generiert dieses Token nicht automatisch, wenn
gateway.auth.modebereitspassword,noneodertrusted-proxyist. - Halten Sie das Gateway und alle Node-Hosts in einem privaten Netzwerk (Tailscale); vermeiden Sie öffentliche Erreichbarkeit.
- Behandeln Sie Remote-CDP-URLs/-Tokens als Secrets; bevorzugen Sie Umgebungsvariablen oder einen Secret-Manager.
- Bevorzugen Sie, wenn möglich, verschlüsselte Endpunkte (HTTPS oder WSS) und kurzlebige Tokens.
- Vermeiden Sie es, langlebige Tokens direkt in Konfigurationsdateien einzubetten.
Profile (mehrere Browser)
OpenClaw unterstützt mehrere benannte Profile (Routing-Konfigurationen). Profile können sein:- von openclaw verwaltet: eine dedizierte Chromium-basierte Browser-Instanz mit eigenem User-Data-Verzeichnis + CDP-Port
- remote: eine explizite CDP-URL (Chromium-basierter Browser läuft anderswo)
- bestehende Sitzung: Ihr bestehendes Chrome-Profil über automatisches Verbinden mit Chrome DevTools MCP
- Das Profil
openclawwird automatisch erstellt, falls es fehlt. - Das Profil
userist für das Anhängen an eine bestehende Sitzung über Chrome MCP integriert. - Profile für bestehende Sitzungen sind zusätzlich zu
userOpt-in; erstellen Sie sie mit--driver existing-session. - Lokale CDP-Ports werden standardmäßig aus 18800–18899 zugewiesen.
- Beim Löschen eines Profils wird sein lokales Datenverzeichnis in den Papierkorb verschoben.
?profile=<name>; die CLI verwendet --browser-profile.
Bestehende Sitzung über Chrome DevTools MCP
OpenClaw kann sich auch über den offiziellen Chrome DevTools MCP-Server an ein laufendes Chromium-basiertes Browser-Profil anhängen. Dadurch werden die Tabs und der Anmeldestatus wiederverwendet, die in diesem Browser-Profil bereits geöffnet sind. Offizielle Hintergrund- und Setup-Referenzen: Integriertes Profil:user
- Das integrierte Profil
userverwendet automatisches Verbinden über Chrome MCP und zielt auf das lokale Standardprofil von Google Chrome.
userDataDir für Brave, Edge, Chromium oder ein nicht standardmäßiges Chrome-Profil:
- Öffnen Sie die Inspektionsseite dieses Browsers für Remote-Debugging.
- Aktivieren Sie Remote-Debugging.
- Lassen Sie den Browser weiterlaufen und genehmigen Sie den Verbindungs-Prompt, wenn OpenClaw sich anhängt.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statuszeigtdriver: existing-sessionstatuszeigttransport: chrome-mcpstatuszeigtrunning: truetabslistet Ihre bereits geöffneten Browser-Tabs aufsnapshotgibt Refs aus dem ausgewählten Live-Tab zurück
- der Zielbrowser auf Chromium-Basis hat Version
144+ - Remote-Debugging ist auf der Inspektionsseite dieses Browsers aktiviert
- der Browser hat den Zustimmungs-Prompt zum Anhängen angezeigt und Sie haben ihn akzeptiert
openclaw doctormigriert alte browserbasierte Konfigurationen mit Erweiterung und prüft, ob Chrome lokal für Standardprofile mit automatischem Verbinden installiert ist, kann aber browserseitiges Remote-Debugging nicht für Sie aktivieren
- Verwenden Sie
profile="user", wenn Sie den angemeldeten Browser-Zustand des Benutzers benötigen. - Wenn Sie ein benutzerdefiniertes Profil für bestehende Sitzungen verwenden, übergeben Sie diesen expliziten Profilnamen.
- Wählen Sie diesen Modus nur, wenn sich der Benutzer am Computer befindet, um den Anhänge- Prompt zu genehmigen.
- das Gateway oder der Node-Host kann
npx chrome-devtools-mcp@latest --autoConnectstarten
- Dieser Pfad ist risikoreicher als das isolierte Profil
openclaw, weil er innerhalb Ihrer angemeldeten Browser-Sitzung agieren kann. - OpenClaw startet den Browser für diesen Treiber nicht; es hängt sich nur an eine bestehende Sitzung an.
- OpenClaw verwendet hier den offiziellen Chrome-DevTools-MCP-Ablauf
--autoConnect. WennuserDataDirgesetzt ist, übergibt OpenClaw dies, um gezielt dieses explizite Chromium-User-Data-Verzeichnis anzusprechen. - Screenshots für bestehende Sitzungen unterstützen Seitenaufnahmen und Elementaufnahmen mit
--refaus Snapshots, aber keine CSS-Selektoren mit--element. - Seitenscreenshots für bestehende Sitzungen funktionieren ohne Playwright über Chrome MCP.
Ref-basierte Element-Screenshots (
--ref) funktionieren dort ebenfalls, aber--full-pagekann nicht mit--refoder--elementkombiniert werden. - Aktionen in bestehenden Sitzungen sind weiterhin eingeschränkter als im verwalteten Browser-
Pfad:
click,type,hover,scrollIntoView,dragundselectbenötigen Snapshot-Refs statt CSS-Selektorenclickunterstützt nur die linke Maustaste (keine Button-Overrides oder Modifikatoren)typeunterstütztslowly=truenicht; verwenden SiefilloderpresspressunterstütztdelayMsnichthover,scrollIntoView,drag,select,fillundevaluateunterstützen keine Timeout-Überschreibungen pro Aufrufselectunterstützt derzeit nur einen einzelnen Wert
wait --urlfür bestehende Sitzungen unterstützt exakte, Teilstring- und Glob-Muster wie andere Browser-Treiber.wait --load networkidlewird noch nicht unterstützt.- Upload-Hooks für bestehende Sitzungen benötigen
refoderinputRef, unterstützen jeweils nur eine Datei und unterstützen kein CSS-element-Targeting. - Dialog-Hooks für bestehende Sitzungen unterstützen keine Timeout-Überschreibungen.
- Einige Funktionen erfordern weiterhin den verwalteten Browser-Pfad, darunter Batch-
Aktionen, PDF-Export, Download-Abfangung und
responsebody. - Bestehende Sitzungen sind hostlokal. Wenn Chrome auf einem anderen Rechner oder in einem anderen Netzwerk-Namespace läuft, verwenden Sie stattdessen Remote-CDP oder einen Node-Host.
Isolationsgarantien
- Dediziertes User-Data-Verzeichnis: Berührt niemals Ihr persönliches Browserprofil.
- Dedizierte Ports: Vermeidet
9222, um Kollisionen mit Entwicklungs-Workflows zu verhindern. - Deterministische Tab-Steuerung: Tabs werden über
targetIdadressiert, nicht über „letzter Tab“.
Browser-Auswahl
Beim lokalen Starten wählt OpenClaw den ersten verfügbaren Browser:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath überschreiben.
Plattformen:
- macOS: prüft
/Applicationsund~/Applications. - Linux: sucht nach
google-chrome,brave,microsoft-edge,chromiumusw. - Windows: prüft gängige Installationsorte.
Steuerungs-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-Authentifizierung mit gemeinsamem Secret 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 verwendet keine Trusted-Proxy- oder Tailscale-Serve-Identitäts-Header.
- Wenn
gateway.auth.modenoneodertrusted-proxyist, übernehmen diese Loopback-Browser- Routen diese identitätsbehafteten Modi nicht; halten Sie sie auf reines Loopback beschränkt.
Fehlervertrag von /act
POST /act verwendet eine strukturierte Fehlerantwort für Validierungs- und
Richtlinienfehler auf Routenebene:
code-Werte:
ACT_KIND_REQUIRED(HTTP 400):kindfehlt oder wird nicht erkannt.ACT_INVALID_REQUEST(HTTP 400): Die Aktions-Payload ist bei Normalisierung oder Validierung fehlgeschlagen.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectorwurde mit einer nicht unterstützten Aktionsart verwendet.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(oderwait --fn) ist per Konfiguration deaktiviert.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdauf oberster Ebene oder im Batch steht im Konflikt mit dem Anfrageziel.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): Die Aktion wird für Profile mit bestehender Sitzung nicht unterstützt.
{ "error": "<message>" } ohne ein
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 501-Fehler zurück. Was ohne Playwright weiterhin funktioniert:- ARIA-Snapshots
- Seitenscreenshots für den verwalteten Browser
openclaw, wenn ein WebSocket pro Tab für CDP verfügbar ist - Seitenscreenshots für Profile mit
existing-session/ Chrome MCP - Ref-basierte Screenshots (
--ref) für bestehende Sitzungen aus Snapshot-Ausgaben
navigateact- AI-Snapshots / Role-Snapshots
- Element-Screenshots mit CSS-Selektoren (
--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, installieren Sie das vollständige
Playwright-Paket (nicht playwright-core) und starten Sie das Gateway neu, oder installieren Sie
OpenClaw mit Browser-Unterstützung neu.
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 ein Bind-Mount persistent gespeichert wird. Siehe Docker.
So funktioniert es (intern)
Ablauf auf hoher Ebene:- Ein kleiner Steuerungsserver akzeptiert HTTP-Anfragen.
- Er verbindet sich über CDP mit Chromium-basierten Browsern (Chrome/Brave/Edge/Chromium).
- Für erweiterte Aktionen (klicken/tippen/Snapshot/PDF) verwendet er Playwright auf Basis von CDP.
- Wenn Playwright fehlt, sind nur Nicht-Playwright-Operationen verfügbar.
CLI-Kurzreferenz
Alle Befehle akzeptieren--browser-profile <name>, um ein bestimmtes Profil anzusprechen.
Alle Befehle akzeptieren außerdem --json für maschinenlesbare Ausgabe (stabile Payloads).
Grundlagen:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level error
- Für reine Attach-only- und Remote-CDP-Profile ist
openclaw browser stopweiterhin der richtige Bereinigungsbefehl nach Tests. Er schließt die aktive Steuerungssitzung und entfernt temporäre Emulationsüberschreibungen, statt den zugrunde liegenden Browser zu beenden. openclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
uploadunddialogsind Arming-Aufrufe; führen Sie sie vor dem Klick/Drücken aus, der den Dateiauswahldialog/Dialog auslöst.- Ausgabepfade für Downloads und Traces sind auf OpenClaw-Temp-Wurzeln beschränkt:
- Traces:
/tmp/openclaw(Fallback:${os.tmpdir()}/openclaw) - Downloads:
/tmp/openclaw/downloads(Fallback:${os.tmpdir()}/openclaw/downloads)
- Traces:
- Upload-Pfade sind auf eine OpenClaw-Temp-Wurzel für Uploads beschränkt:
- Uploads:
/tmp/openclaw/uploads(Fallback:${os.tmpdir()}/openclaw/uploads)
- Uploads:
uploadkann Dateieingaben auch direkt über--input-refoder--elementsetzen.snapshot:--format ai(Standard, wenn Playwright installiert ist): gibt einen AI-Snapshot mit numerischen Refs zurück (aria-ref="<n>").--format aria: gibt den Accessibility-Baum zurück (keine Refs; nur zur Inspektion).--efficient(oder--mode efficient): kompaktes Role-Snapshot-Preset (interaktiv + kompakt + Tiefe + niedrigeremaxChars).- Konfigurationsstandard (nur Tool/CLI): Setzen Sie
browser.snapshotDefaults.mode: "efficient", um effiziente Snapshots zu verwenden, wenn der Aufrufer keinen Modus übergibt (siehe Gateway configuration). - Role-Snapshot-Optionen (
--interactive,--compact,--depth,--selector) erzwingen einen rollenbasierten Snapshot mit Refs wieref=e12. --frame "<iframe selector>"begrenzt rollenbasierte Snapshots auf ein iframe (zusammen mit Rollen-Refs wiee12).--interactivegibt eine flache, leicht auswählbare Liste interaktiver Elemente aus (am besten zum Ausführen von Aktionen).--labelsfügt einen Screenshot nur des Viewports mit eingeblendeten Ref-Labels hinzu (gibtMEDIA:<path>aus).
click/type/usw. benötigen einrefaussnapshot(entweder numerisch12oder Rollen-Refe12). CSS-Selektoren werden für Aktionen absichtlich nicht unterstützt.
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 (Rollen-Refs wie
e12):openclaw browser snapshot --interactive(oder--compact,--depth,--selector,--frame)- Ausgabe: eine rollenbasierte Liste/Struktur mit
[ref=e12](und optional[nth=1]). - Aktionen:
openclaw browser click e12,openclaw browser highlight e12. - Intern wird die Ref über
getByRole(...)aufgelöst (plusnth()bei Duplikaten). - Fügen Sie
--labelshinzu, um einen Viewport-Screenshot mit eingeblendetene12-Labels einzuschließen.
- Ausgabe: eine rollenbasierte Liste/Struktur 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 Rollen-Refs bis zum nächsten Role-Snapshot auf dieses iframe beschränkt.
Erweiterte Wartemöglichkeiten
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 Selektor 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 Rollen-Refs im interaktiven Modus) - Wenn 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 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 Tooling-Anwendungen.
Beispiele:
refs plus einen kleinen stats-Block (Zeilen/Zeichen/Refs/interaktiv), damit Tools über Payload-Größe und Dichte nachdenken können.
Einstellungen für Zustand und Umgebung
Diese sind nützlich für Workflows nach dem Muster „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"}'(Legacy-set 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 / Gebietsschema:
set timezone ...,set locale ... - Gerät / Viewport:
set device "iPhone 14"(Playwright-Gerätevoreinstellungen)set viewport 1280 720
Sicherheit und Datenschutz
- Das Browserprofil
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-Systemen (X/Twitter usw.) siehe Browser login + X/Twitter posting.
- Halten Sie Gateway/Node-Host privat (nur Loopback oder nur Tailnet).
- Remote-CDP-Endpunkte sind mächtig; tunneln und schützen Sie sie.
Fehlerbehebung
Für Linux-spezifische Probleme (insbesondere Snap-Chromium) siehe Browser troubleshooting. Für Setups mit WSL2-Gateway + Windows-Chrome auf getrennten Hosts siehe WSL2 + Windows + remote Chrome CDP troubleshooting.Agenten-Tools + wie die Steuerung funktioniert
Der Agent erhält ein Tool für Browser-Automatisierung:browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotgibt einen stabilen UI-Baum zurück (AI oder ARIA).browser actverwendet dieref-IDs aus dem Snapshot zum Klicken/Tippen/Ziehen/Auswählen.browser screenshoterfasst Pixel (ganze Seite oder Element).browserakzeptiert:profile, um ein benanntes Browserprofil auszuwählen (openclaw, chrome oder Remote-CDP).target(sandbox|host|node), um auszuwählen, wo sich der Browser befindet.- In Sandbox-Sitzungen erfordert
target: "host"agents.defaults.sandbox.browser.allowHostControl=true. - Wenn
targetweggelassen wird: Standardmäßig verwenden Sandbox-Sitzungensandbox, Nicht-Sandbox-Sitzungenhost. - Wenn ein Browser-fähiger Node verbunden ist, kann das Tool automatisch dorthin weiterleiten, sofern Sie nicht
target="host"odertarget="node"festlegen.
Verwandt
- Tools Overview — alle verfügbaren Agenten-Tools
- Sandboxing — Browser-Steuerung in Sandbox-Umgebungen
- Security — Risiken der Browser-Steuerung und Härtung