openclaw browser
et les schémas de script (snapshots, refs, waits, flux de débogage).
API de contrôle (facultative)
Pour les intégrations locales uniquement, le Gateway expose une petite API HTTP loopback :- État/démarrage/arrêt :
GET /,POST /start,POST /stop - Onglets :
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/capture d’écran :
GET /snapshot,POST /screenshot - Actions :
POST /navigate,POST /act - Hooks :
POST /hooks/file-chooser,POST /hooks/dialog - Téléchargements :
POST /download,POST /wait/download - Débogage :
GET /console,POST /pdf - Débogage :
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Réseau :
POST /response/body - État :
GET /cookies,POST /cookies/set,POST /cookies/clear - État :
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Paramètres :
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>.
Si l’authentification gateway à secret partagé est configurée, les routes HTTP browser exigent aussi une authentification :
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>ou une authentification HTTP Basic avec ce mot de passe
- Cette API browser loopback autonome ne consomme pas les en-têtes d’identité trusted-proxy ou Tailscale Serve.
- Si
gateway.auth.modevautnoneoutrusted-proxy, ces routes browser loopback n’héritent pas de ces modes porteurs d’identité ; gardez-les réservées au loopback.
Contrat d’erreur de /act
POST /act utilise une réponse d’erreur structurée pour la validation au niveau de la route et
les échecs de politique :
code :
ACT_KIND_REQUIRED(HTTP 400) :kindest absent ou non reconnu.ACT_INVALID_REQUEST(HTTP 400) : la charge utile de l’action a échoué à la normalisation ou à la validation.ACT_SELECTOR_UNSUPPORTED(HTTP 400) :selectora été utilisé avec un type d’action non pris en charge.ACT_EVALUATE_DISABLED(HTTP 403) :evaluate(ouwait --fn) est désactivé par la configuration.ACT_TARGET_ID_MISMATCH(HTTP 403) :targetIdau niveau supérieur ou en lot est en conflit avec la cible de la requête.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501) : l’action n’est pas prise en charge pour les profils existing-session.
{ "error": "<message>" } sans champ
code.
Exigence Playwright
Certaines fonctionnalités (navigate/act/AI snapshot/role snapshot, captures d’écran d’élément, PDF) nécessitent Playwright. Si Playwright n’est pas installé, ces endpoints renvoient une erreur 501 explicite. Ce qui fonctionne encore sans Playwright :- Snapshots ARIA
- Captures d’écran de page pour le navigateur géré
openclawlorsqu’un WebSocket CDP par onglet est disponible - Captures d’écran de page pour les profils
existing-session/ Chrome MCP - Captures d’écran basées sur
refpourexisting-session(--ref) à partir de la sortie snapshot
navigateact- AI snapshots / role snapshots
- Captures d’écran d’élément via sélecteur CSS (
--element) - Export PDF complet du navigateur
--full-page ; la route renvoie fullPage is not supported for element screenshots.
Si vous voyez Playwright is not available in this gateway build, réparez les dépendances runtime du plugin browser intégré pour que playwright-core soit installé,
puis redémarrez le gateway. Pour les installations empaquetées, exécutez openclaw doctor --fix.
Pour Docker, installez aussi les binaires du navigateur Chromium comme indiqué ci-dessous.
Installation Docker de Playwright
Si votre Gateway s’exécute dans Docker, éviteznpx playwright (conflits de remplacement npm).
Utilisez la CLI intégrée à la place :
PLAYWRIGHT_BROWSERS_PATH (par exemple,
/home/node/.cache/ms-playwright) et assurez-vous que /home/node est persisté via
OPENCLAW_HOME_VOLUME ou un bind mount. Voir Docker.
Comment cela fonctionne (interne)
Un petit serveur de contrôle loopback accepte les requêtes HTTP et se connecte aux navigateurs basés sur Chromium via CDP. Les actions avancées (click/type/snapshot/PDF) passent par Playwright au-dessus de CDP ; lorsque Playwright est absent, seules les opérations non Playwright sont disponibles. L’agent voit une interface stable tandis que les navigateurs et profils locaux/distants s’échangent librement en dessous.Référence rapide CLI
Toutes les commandes acceptent--browser-profile <name> pour cibler un profil spécifique, et --json pour une sortie lisible par machine.
Bases : statut, onglets, open/focus/close
Bases : statut, onglets, open/focus/close
Inspection : screenshot, snapshot, console, errors, requests
Inspection : screenshot, snapshot, console, errors, requests
Actions : navigate, click, type, drag, wait, evaluate
Actions : navigate, click, type, drag, wait, evaluate
État : cookies, storage, offline, headers, geo, device
État : cookies, storage, offline, headers, geo, device
uploadetdialogsont des appels d’armement ; exécutez-les avant le clic/la touche qui déclenche le sélecteur/la boîte de dialogue.click/type/etc nécessitent unerefissue desnapshot(numérique12ou role refe12). Les sélecteurs CSS ne sont volontairement pas pris en charge pour les actions.- Les chemins de téléchargement, de trace et de téléversement sont limités aux racines temp OpenClaw :
/tmp/openclaw{,/downloads,/uploads}(repli :${os.tmpdir()}/openclaw/...). uploadpeut aussi définir directement les inputs de fichier via--input-refou--element.
--format ai(par défaut avec Playwright) : AI snapshot avec refs numériques (aria-ref="<n>").--format aria: arbre d’accessibilité, sans refs ; inspection uniquement.--efficient(ou--mode efficient) : preset de role snapshot compact. Définissezbrowser.snapshotDefaults.mode: "efficient"pour en faire la valeur par défaut (voir Configuration Gateway).--interactive,--compact,--depth,--selectorforcent un role snapshot avec des refsref=e12.--frame "<iframe>"limite les role snapshots à une iframe.--labelsajoute une capture d’écran du viewport avec des étiquettes de ref superposées (afficheMEDIA:<path>).
Snapshots et refs
OpenClaw prend en charge deux styles de “snapshot” :-
AI snapshot (refs numériques) :
openclaw browser snapshot(par défaut ;--format ai)- Sortie : un snapshot texte qui inclut des refs numériques.
- Actions :
openclaw browser click 12,openclaw browser type 23 "hello". - En interne, la ref est résolue via
aria-refde Playwright.
-
Role snapshot (role refs comme
e12) :openclaw browser snapshot --interactive(ou--compact,--depth,--selector,--frame)- Sortie : une liste/arborescence basée sur les rôles avec
[ref=e12](et éventuellement[nth=1]). - Actions :
openclaw browser click e12,openclaw browser highlight e12. - En interne, la ref est résolue via
getByRole(...)(plusnth()pour les doublons). - Ajoutez
--labelspour inclure une capture d’écran du viewport avec les étiquettese12superposées.
- Sortie : une liste/arborescence basée sur les rôles avec
- Les refs ne sont pas stables entre les navigations ; si quelque chose échoue, relancez
snapshotet utilisez une nouvelle ref. - Si le role snapshot a été pris avec
--frame, les role refs sont limitées à cette iframe jusqu’au prochain role snapshot.
Super-pouvoirs de wait
Vous pouvez attendre autre chose que du temps/texte :- Attendre une URL (globs pris en charge par Playwright) :
openclaw browser wait --url "**/dash"
- Attendre un état de chargement :
openclaw browser wait --load networkidle
- Attendre un prédicat JS :
openclaw browser wait --fn "window.ready===true"
- Attendre qu’un sélecteur devienne visible :
openclaw browser wait "#main"
Workflows de débogage
Lorsqu’une action échoue (par ex. “not visible”, “strict mode violation”, “covered”) :openclaw browser snapshot --interactive- Utilisez
click <ref>/type <ref>(préférez les role refs en mode interactif) - Si cela échoue encore :
openclaw browser highlight <ref>pour voir ce que Playwright cible - Si la page se comporte bizarrement :
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Pour un débogage approfondi : enregistrez une trace :
openclaw browser trace start- reproduisez le problème
openclaw browser trace stop(afficheTRACE:<path>)
Sortie JSON
--json est destiné au scripting et à l’outillage structuré.
Exemples :
refs plus un petit bloc stats (lignes/caractères/refs/interactive) afin que les outils puissent raisonner sur la taille et la densité de la charge utile.
Réglages d’état et d’environnement
Ils sont utiles pour les workflows « faire se comporter le site comme X » :- Cookies :
cookies,cookies set,cookies clear - Storage :
storage local|session get|set|clear - Offline :
set offline on|off - Headers :
set headers --headers-json '{"X-Debug":"1"}'(l’ancienset headers --json '{"X-Debug":"1"}'reste pris en charge) - Authentification HTTP Basic :
set credentials user pass(ou--clear) - Géolocalisation :
set geo <lat> <lon> --origin "https://example.com"(ou--clear) - Média :
set media dark|light|no-preference|none - Fuseau horaire / locale :
set timezone ...,set locale ... - Appareil / viewport :
set device "iPhone 14"(presets d’appareil Playwright)set viewport 1280 720
Sécurité et confidentialité
- Le profil browser openclaw peut contenir des sessions connectées ; traitez-le comme sensible.
browser act kind=evaluate/openclaw browser evaluateetwait --fnexécutent du JavaScript arbitraire dans le contexte de la page. L’injection de prompt peut orienter cela. Désactivez-le avecbrowser.evaluateEnabled=falsesi vous n’en avez pas besoin.- Pour les connexions et les remarques anti-bot (X/Twitter, etc.), voir Connexion browser + publication X/Twitter.
- Gardez l’hôte Gateway/nœud privé (loopback ou tailnet uniquement).
- Les endpoints CDP distants sont puissants ; tunnelisez-les et protégez-les.
Associé
- Browser — vue d’ensemble, configuration, profils, sécurité
- Connexion browser — se connecter aux sites
- Dépannage browser sous Linux
- Dépannage browser WSL2