openclaw browser
CLI en scriptpatronen (snapshots, refs, waits, debugflows).
Besturings-API (optioneel)
Alleen voor lokale integraties stelt de Gateway een kleine loopback-HTTP-API beschikbaar. Deze zelfstandige server is opt-in: stel de omgevingsvariabeleOPENCLAW_EAGER_BROWSER_CONTROL_SERVER=1 in de gateway-serviceomgeving in
en herstart de Gateway voordat de HTTP-eindpunten beschikbaar worden. Zonder
deze variabele werkt de browserbesturingsruntime nog steeds via de CLI en
agenttools, maar luistert er niets op de loopback-besturingspoort.
- Status/start/stop:
GET /,POST /start,POST /stop - Tabbladen:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/schermafbeelding:
GET /snapshot,POST /screenshot - Acties:
POST /navigate,POST /act - Hooks:
POST /hooks/file-chooser,POST /hooks/dialog - Downloads:
POST /download,POST /wait/download - Machtigingen:
POST /permissions/grant - Debuggen:
GET /console,POST /pdf - Debuggen:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Netwerk:
POST /response/body - Status:
GET /cookies,POST /cookies/set,POST /cookies/clear - Status:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Instellingen:
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 vraagt een
eenmalige headless-start aan voor lokale beheerde profielen zonder opgeslagen
browserconfiguratie te wijzigen; attach-only-, externe CDP- en bestaande-sessieprofielen weigeren
die override omdat OpenClaw die browserprocessen niet start.
Voor tabbladeindpunten is targetId de compatibiliteitsveldnaam. Geef bij voorkeur
suggestedTargetId door uit GET /tabs of POST /tabs/open; labels en tabId-
handles zoals t1 worden ook geaccepteerd. Ruwe CDP-doel-ID’s en unieke ruwe
doel-ID-prefixen werken nog steeds, maar het zijn vluchtige diagnostische handles.
Als Gateway-authenticatie met gedeeld geheim is geconfigureerd, vereisen browser-HTTP-routes ook authenticatie:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>of HTTP Basic-authenticatie met dat wachtwoord
- Deze zelfstandige loopback-browser-API gebruikt geen trusted-proxy- of Tailscale Serve-identiteitsheaders.
- Als
gateway.auth.modenoneoftrusted-proxyis, erven deze loopback-browserroutes die identiteitsdragende modi niet; houd ze uitsluitend loopback.
/act-foutcontract
POST /act gebruikt een gestructureerde foutrespons voor validatie op routeniveau en
beleidsfouten:
code-waarden:
ACT_KIND_REQUIRED(HTTP 400):kindontbreekt of wordt niet herkend.ACT_INVALID_REQUEST(HTTP 400): normalisatie of validatie van de actielading is mislukt.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectoris gebruikt met een niet-ondersteund actietype.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(ofwait --fn) is uitgeschakeld door configuratie.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdop topniveau of in batches conflicteert met het aanvraagdoel.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): actie wordt niet ondersteund voor bestaande-sessieprofielen.
{ "error": "<message>" } retourneren zonder
code-veld.
Playwright-vereiste
Sommige functies (navigate/act/AI-snapshot/rolsnapshot, element-schermafbeeldingen, PDF) vereisen Playwright. Als Playwright niet is geinstalleerd, retourneren die eindpunten een duidelijke 501-fout. Wat nog werkt zonder Playwright:- ARIA-snapshots
- Toegankelijkheidssnapshots in rolstijl (
--interactive,--compact,--depth,--efficient) wanneer een per-tabblad CDP-WebSocket beschikbaar is. Dit is een fallback voor inspectie en ref-ontdekking; Playwright blijft de primaire actie-engine. - Paginaschermafbeeldingen voor de beheerde
openclaw-browser wanneer een per-tabblad CDP- WebSocket beschikbaar is - Paginaschermafbeeldingen voor
existing-session- / Chrome MCP-profielen - Op refs gebaseerde
existing-session-schermafbeeldingen (--ref) uit snapshotuitvoer
navigateact- AI-snapshots die afhankelijk zijn van Playwrights native AI-snapshotindeling
- Element-schermafbeeldingen met CSS-selector (
--element) - volledige browser-PDF-export
--full-page; de route retourneert fullPage is not supported for element screenshots.
Als je Playwright is not available in this gateway build ziet, mist de verpakte
Gateway de kernruntime-afhankelijkheid voor browsers. Installeer OpenClaw opnieuw of werk
OpenClaw bij en herstart daarna de Gateway. Installeer voor Docker ook de Chromium-
browserbinaries zoals hieronder weergegeven.
Docker Playwright-installatie
Als je Gateway in Docker draait, vermijd dannpx playwright (npm-overrideconflicten).
Voor aangepaste images bak je Chromium in de image:
PLAYWRIGHT_BROWSERS_PATH in (bijvoorbeeld
/home/node/.cache/ms-playwright) en zorg je dat /home/node behouden blijft via
OPENCLAW_HOME_VOLUME of een bind mount. OpenClaw detecteert de behouden
Chromium automatisch op Linux. Zie Docker.
Hoe het werkt (intern)
Een kleine loopback-besturingsserver accepteert HTTP-aanvragen en maakt via CDP verbinding met Chromium-gebaseerde browsers. Geavanceerde acties (click/type/snapshot/PDF) lopen via Playwright boven op CDP; wanneer Playwright ontbreekt, zijn alleen niet-Playwright-bewerkingen beschikbaar. De agent ziet een stabiele interface terwijl lokale/externe browsers en profielen eronder vrij worden verwisseld.CLI-snelreferentie
Alle opdrachten accepteren--browser-profile <name> om een specifiek profiel te targeten, en --json voor machineleesbare uitvoer.
Basics: status, tabs, open/focus/close
Basics: status, tabs, open/focus/close
Inspection: screenshot, snapshot, console, errors, requests
Inspection: screenshot, snapshot, console, errors, requests
uploadendialogzijn bewapenings-aanroepen; voer ze uit voor de click/press die de kiezer/dialoog activeert. Als een actie een modaal venster opent, bevat de actieresponsblockedByDialogenbrowserState.dialogs.pending; geef diedialogIddoor om direct te reageren. Dialogen die buiten OpenClaw worden afgehandeld, verschijnen onderbrowserState.dialogs.recent.click/type/enzovoort vereisen eenrefuitsnapshot(numeriek12, rolrefe12of uitvoerbare ARIA-refax12). CSS-selectors worden bewust niet ondersteund voor acties. Gebruikclick-coordswanneer de zichtbare viewportpositie het enige betrouwbare doel is.- Download- en tracepaden zijn beperkt tot tijdelijke OpenClaw-roots:
/tmp/openclaw{,/downloads}(fallback:${os.tmpdir()}/openclaw/...). uploadaccepteert bestanden uit de tijdelijke uploads-root van OpenClaw en door OpenClaw beheerde inkomende media. Beheerde inkomende media kunnen worden verwezen alsmedia://inbound/<id>, sandbox-relatiefmedia/inbound/<id>, of een opgelost pad binnen de beheerde directory voor inkomende media. Geneste mediarefs, traversal, symlinks, hardlinks en willekeurige lokale paden worden nog steeds geweigerd.uploadkan ook bestandsinvoervelden direct instellen via--input-refof--element.
suggestedTargetId uit tabs in scripts.
Snapshotvlaggen in een oogopslag:
--format ai(standaard met Playwright): AI-snapshot met numerieke refs (aria-ref="<n>").--format aria: toegankelijkheidsstructuur metaxN-refs. Wanneer Playwright beschikbaar is, koppelt OpenClaw refs met backend-DOM-id’s aan de live pagina zodat vervolgacties ze kunnen gebruiken; behandel de uitvoer anders alleen als inspectie.--efficient(of--mode efficient): compacte voorinstelling voor rolesnapshot. Stelbrowser.snapshotDefaults.mode: "efficient"in om dit de standaard te maken (zie Gateway-configuratie).--interactive,--compact,--depth,--selectorforceren een rolesnapshot metref=e12-refs.--frame "<iframe>"beperkt rolesnapshots tot een iframe.- Met Playwright voegt
--labelseen screenshot met overlappende ref-labels toe (printMEDIA:<path>) plus eenannotations-array met de begrenzingsbox van elke ref. Bijscreenshotwerken door Playwright ondersteunde labels met--full-page,--refen--element; bijsnapshotblijft de bijbehorende screenshot beperkt tot de viewport. Bestaande-sessie-/chrome-mcp-profielen renderen overlaylabels op paginascreenshots, maar retourneren geenannotationsen gebruiken de Playwright full-page/ref/element-projectiehelper niet. Zonder Playwright of chrome-mcp zijn gelabelde screenshots niet beschikbaar. --urlsvoegt ontdekte linkbestemmingen toe aan AI-snapshots.
Snapshots en refs
OpenClaw ondersteunt twee “snapshot”-stijlen:-
AI-snapshot (numerieke refs):
openclaw browser snapshot(standaard;--format ai)- Uitvoer: een tekstsnapshot met numerieke refs.
- Acties:
openclaw browser click 12,openclaw browser type 23 "hello". - Intern wordt de ref opgelost via Playwrights
aria-ref.
-
Rolesnapshot (rolrefs zoals
e12):openclaw browser snapshot --interactive(of--compact,--depth,--selector,--frame)- Uitvoer: een op rollen gebaseerde lijst/structuur met
[ref=e12](en optioneel[nth=1]). - Acties:
openclaw browser click e12,openclaw browser highlight e12. - Intern wordt de ref opgelost via
getByRole(...)(plusnth()voor duplicaten). - Voeg
--labelstoe om een screenshot met overlappendee12-labels op te nemen. Op door Playwright ondersteunde profielen retourneert dit ook begrenzingsboxmetadata per ref (annotations[]). - Voeg
--urlstoe wanneer linktekst dubbelzinnig is en de agent concrete navigatiedoelen nodig heeft.
- Uitvoer: een op rollen gebaseerde lijst/structuur met
-
ARIA-snapshot (ARIA-refs zoals
ax12):openclaw browser snapshot --format aria- Uitvoer: de toegankelijkheidsstructuur als gestructureerde knooppunten.
- Acties:
openclaw browser click ax12werkt wanneer het snapshotpad de ref kan koppelen via Playwright en Chrome backend-DOM-id’s.
-
Als Playwright niet beschikbaar is, kunnen ARIA-snapshots nog steeds nuttig zijn voor
inspectie, maar refs zijn mogelijk niet bruikbaar voor acties. Maak opnieuw een snapshot met
--format aiof--interactivewanneer je actierefs nodig hebt. -
Docker-bewijs voor het raw-CDP-terugvalpad:
pnpm test:docker:browser-cdp-snapshotstart Chromium met CDP, voertbrowser doctor --deepuit en verifieert dat rolesnapshots link-URL’s, cursor-gepromoveerde aanklikbare elementen en iframe-metadata bevatten.
- Refs zijn niet stabiel over navigaties heen; als iets mislukt, voer
snapshotopnieuw uit en gebruik een nieuwe ref. /actretourneert de huidige ruwetargetIdna door actie getriggerde vervanging wanneer het de vervangende tab kan bewijzen. Blijf stabiele tab-id’s/labels gebruiken voor vervolgopdrachten.- Als de rolesnapshot met
--frameis gemaakt, zijn rolrefs beperkt tot dat iframe tot de volgende rolesnapshot. - Onbekende of verouderde
axN-refs falen snel in plaats van terug te vallen op Playwrightsaria-ref-selector. Voer een nieuwe snapshot uit op dezelfde tab wanneer dat gebeurt.
Wachtuitbreidingen
Je kunt op meer wachten dan alleen tijd/tekst:- Wachten op URL (globs ondersteund door Playwright):
openclaw browser wait --url "**/dash"
- Wachten op laadstatus:
openclaw browser wait --load networkidle- Ondersteund op beheerde
openclaw- en raw/remote CDP-profielen. De profielenuserenexisting-sessionweigerennetworkidle; gebruik daar--url,--text, een selector of--fn-wachters.
- Wachten op een JS-predicaat:
openclaw browser wait --fn "window.ready===true"
- Wachten tot een selector zichtbaar wordt:
openclaw browser wait "#main"
Debugworkflows
Wanneer een actie mislukt (bijv. “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Gebruik
click <ref>/type <ref>(geef de voorkeur aan rolrefs in interactieve modus) - Als het nog steeds mislukt:
openclaw browser highlight <ref>om te zien waarop Playwright zich richt - Als de pagina zich vreemd gedraagt:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Voor diepgaande debugging: neem een trace op:
openclaw browser trace start- reproduceer het probleem
openclaw browser trace stop(printTRACE:<path>)
JSON-uitvoer
--json is bedoeld voor scripts en gestructureerde tooling.
Voorbeelden:
refs plus een klein stats-blok (regels/tekens/refs/interactief), zodat tools kunnen redeneren over payloadgrootte en dichtheid.
Status- en omgevingsknoppen
Deze zijn nuttig voor workflows van het type “laat de site zich gedragen als X”:- Cookies:
cookies,cookies set,cookies clear - Opslag:
storage local|session get|set|clear - Offline:
set offline on|off - Headers:
set headers --headers-json '{"X-Debug":"1"}'(legacyset headers --json '{"X-Debug":"1"}'blijft ondersteund) - HTTP-basisverificatie:
set credentials user pass(of--clear) - Geolocatie:
set geo <lat> <lon> --origin "https://example.com"(of--clear) - Media:
set media dark|light|no-preference|none - Tijdzone / locale:
set timezone ...,set locale ... - Apparaat / viewport:
set device "iPhone 14"(Playwright-apparaatvoorinstellingen)set viewport 1280 720
Beveiliging en privacy
- Het openclaw-browserprofiel kan ingelogde sessies bevatten; behandel het als gevoelig.
browser act kind=evaluate/openclaw browser evaluateenwait --fnvoeren willekeurige JavaScript uit in de paginacontext. Promptinjectie kan dit sturen. Schakel dit uit metbrowser.evaluateEnabled=falseals je het niet nodig hebt.openclaw browser evaluate --fnaccepteert een functiebron, een expressie of een statement-body. Statement-body’s worden verpakt als async functies, dus gebruikreturnvoor de waarde die je terug wilt krijgen. Gebruik--timeout-ms <ms>wanneer de functie aan paginazijde langer nodig kan hebben dan de standaard-evaluatietime-out.- Voor logins en anti-botnotities (X/Twitter, enz.), zie Browserlogin + posten op X/Twitter.
- Houd de Gateway/Node-host privé (local loopback of alleen tailnet).
- Remote CDP-eindpunten zijn krachtig; tunnel en bescherm ze.
Gerelateerd
- Browser - overzicht, configuratie, profielen, beveiliging
- Browserlogin - inloggen op sites
- Browser Linux-probleemoplossing
- Browser WSL2-probleemoplossing