APIAPI de contrôle de navigateur
Pour la configuration, le dépannage et la résolution de problèmes, consultez Navigateur.
Cette page constitue la référence de l’API HTTP de contrôle local, de la openclaw browserCLI
CLI et des modèles de script (instantanés, références, attentes, flux de débogage).
API de contrôle (facultatif)
Section intitulée « API de contrôle (facultatif) »Pour les intégrations locales uniquement, la Gateway expose une petite API HTTP de bouclage :
- Statut/démarrage/arrêt :
GET /,POST /start,POST /stop - Onglets :
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Instantané/capture d’écran :
GET /snapshot,POST /screenshot - Actions :
POST /navigate,POST /act - Crochets (hooks) :
POST /hooks/file-chooser,POST /hooks/dialog - Téléchargements :
POST /download,POST /wait/download - Autorisations :
POST /permissions/grant - 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
Tous les points de terminaison acceptent ?profile=<name>. POST /start?headless=true demande un
lancement headless ponctuel pour les profils gérés localement sans modifier la
configuration persistante du navigateur ; les profils attach-only, CDP distant et de session existante rejettent ce remplacement car OpenClaw ne lance pas ces processus de navigateur.
Pour les points de terminaison d’onglet, targetId est le nom du champ de compatibilité. Il est préférable de passer
suggestedTargetId issu de GET /tabs ou POST /tabs/open ; les étiquettes et les descripteurs
tabId tels que t1 sont également acceptés. Les identifiants bruts de cible CDP et les préfixes uniques d’identifiant de cible brute fonctionnent toujours, mais ce sont des descripteurs de diagnostic volatils.
Si l’authentification de la passerelle par secret partagé est configurée, les routes HTTP du navigateur nécessitent également une authentification :
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>ou authentification HTTP Basic avec ce mot de passe
Notes :
- Cette API de navigateur en boucle locale autonome ne consomme pas les en-têtes d’identité de proxy de confiance ou de APITailscale Serve.
- Si
gateway.auth.modeestnoneoutrusted-proxy, ces routes de navigateur en boucle locale n’héritent pas de ces modes porteurs d’identité ; gardez-les uniquement en boucle locale.
Contrat d’erreur /act
Section intitulée « Contrat d’erreur /act »POST /act utilise une réponse d’erreur structurée pour la validation au niveau des itinéraires et
les échecs de stratégie :
{ "error": "<message>", "code": "ACT_*" }Valeurs actuelles de code :
ACT_KIND_REQUIRED(HTTP 400) :kindest manquant 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) : letargetIdde niveau supérieur ou par 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 de session existante.
D’autres échecs d’exécution peuvent tout de même renvoyer { "error": "<message>" } sans
champ code.
Configuration requise pour Playwright
Section intitulée « Configuration requise pour Playwright »Certaines fonctionnalités (navigation/action/instantané IA/instantané de rôle, captures d’écran d’élément, PDF) nécessitent Playwright. Si Playwright n’est pas installé, ces points de terminaison renvoient une erreur 501 claire.
Ce qui fonctionne toujours sans Playwright :
- Instantanés ARIA
- Instantanés d’accessibilité de type rôle (
--interactive,--compact,--depth,--efficient) lorsqu’un WebSocket CDP par onglet est disponible. Il s’agit d’un repli pour l’inspection et la découverte de références ; Playwright reste le moteur d’action principal. - Captures d’écran de page pour le navigateur
openclawgéré lorsqu’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 les références
existing-session(--ref) à partir de la sortie de l’instantané
Ce qui nécessite toujours Playwright :
navigateact- Les instantanés IA qui dépendent du format d’instantané IA natif de Playwright
- Captures d’écran d’élément par sélecteur CSS (
--element) - Export PDF complet du navigateur
Les captures d’écran d’élément rejettent également --full-page ; la route renvoie fullPage is not supported for element screenshots.
Si vous voyez Playwright is not available in this gateway build, la dépendance d’exécution principale du navigateur est manquante dans le Gateway
packagé. Réinstallez ou mettez à jour
OpenClaw, puis redémarrez la passerelle. Pour Docker, installez également les binaires du navigateur
Chromium comme indiqué ci-dessous.
Installation de Playwright avec Docker
Section intitulée « Installation de Playwright avec Docker »Si votre Gateway s’exécute dans Docker, évitez npx playwright (conflits de remplacement npm).
Pour les images personnalisées, intégrez Chromium à l’image :
OPENCLAW_INSTALL_BROWSER=1 ./scripts/docker/setup.shPour une image existante, installez-le via le CLI fourni à la place :
docker compose run --rm openclaw-cli \ node /app/node_modules/playwright-core/cli.js install chromiumPour conserver les téléchargements du navigateur, définissez PLAYWRIGHT_BROWSERS_PATH (par exemple,
/home/node/.cache/ms-playwright) et assurez-vous que /home/node est conservé via
OPENCLAW_HOME_VOLUME ou un montage de liaison (bind mount). OpenClaw détecte automatiquement le
Chromium persistant sur Linux. Voir Docker.
Fonctionnement (interne)
Section intitulée « Fonctionnement (interne) »Un petit serveur de contrôle de boucle locale accepte les requêtes HTTP et se connecte aux navigateurs basés sur Chromium via CDP. Les actions avancées (clic/frappe/snapshot/PDF) passent par Playwright par-dessus CDP ; lorsque Playwright est manquant, 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
Section intitulée « 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, ouvrir/focus/fermer
openclaw browser statusopenclaw browser startopenclaw browser start --headless # one-shot local managed headless launchopenclaw browser stop # also clears emulation on attach-only/remote CDPopenclaw browser tabsopenclaw browser tab # shortcut for current tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234Inspection : capture d'écran, snapshot, console, erreurs, requêtes
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12 # or --ref e12openclaw browser screenshot --labelsopenclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --urlsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level erroropenclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000Actions : naviguer, cliquer, taper, glisser, attendre, évaluer
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --double # or e12 for role refsopenclaw browser click-coords 120 340 # viewport coordinatesopenclaw 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 upload media://inbound/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser dialog --dismiss --dialog-id d1openclaw 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 evaluate --timeout-ms 30000 --fn 'async () => { await window.ready; return true; }'openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stopÉtat : cookies, stockage, hors ligne, en-têtes, géo, appareil
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 pass # --clear to removeopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"Remarques :
uploadetdialogsont des appels d’armement ; exécutez-les avant le clic/la pression qui déclenche le sélecteur/la boîte de dialogue. Si une action ouvre une fenêtre modale, la réponse de l’action inclutblockedByDialogetbrowserState.dialogs.pending; transmettez cetdialogIdpour répondre directement. Les boîtes de dialogue gérées en dehors de OpenClaw apparaissent sousbrowserState.dialogs.recent.click/type/etc nécessitent unrefdesnapshot(référence numérique12, référence de rôlee12ou référence ARIA actionableax12). Les sélecteurs CSS ne sont volontairement pas pris en charge pour les actions. Utilisezclick-coordslorsque la position visible dans la fenêtre d’affichage est la seule cible fiable.- Les chemins de téléchargement et de trace sont limités aux racines temporaires OpenClaw :
/tmp/openclaw{,/downloads}(secours :${os.tmpdir()}/openclaw/...). uploadaccepte les fichiers provenant de la racine des téléchargements temporaires OpenClaw et des médias entrants gérés par OpenClaw. Les médias entrants gérés peuvent être référencés parmedia://inbound/<id>, chemin relatif au bac à sablemedia/inbound/<id>, ou un chemin résolu à l’intérieur du répertoire des médias entrants gérés. Les références de média imbriquées, les traversals, les liens symboliques, les liens physiques et les chemins locaux arbitraires sont toujours rejetés.uploadpeut également définir directement les entrées de fichiers via--input-refou--element.
Les identifiants et les étiquettes d’onglet stables survivent au remplacement des cibles brutes de Chromium lorsque OpenClaw peut prouver l’onglet de remplacement, par exemple la même URL ou un seul vieil onglet devenant un seul nouvel onglet après l’envoi du formulaire. Les identifiants de cible brute sont toujours volatiles ; préférez suggestedTargetId de tabs dans les scripts.
Aperçu des indicateurs de snapshot :
--format ai(par défaut avec Playwright) : snapshot IA avec références numériques (aria-ref="<n>").--format aria: arbre d’accessibilité avec référencesaxN. Lorsque Playwright est disponible, OpenClaw lie les références avec les identifiants DOM du backend à la page en direct afin que les actions de suivi puissent les utiliser ; sinon, traitez la sortie comme étant uniquement pour inspection.--efficient(ou--mode efficient) : préréglage de snapshot de rôle compact. Définissezbrowser.snapshotDefaults.mode: "efficient"pour en faire la valeur par défaut (voir configuration du Gateway).--interactive,--compact,--depth,--selectorforcent un snapshot de rôle avec des refsref=e12.--frame "<iframe>"limite la portée des snapshots de rôle à une iframe.--labelsajoute une capture d’écran limitée à la fenêtre d’affichage avec des étiquettes de ref superposées et imprime le chemin enregistré.--urlsajoute les destinations de lien découvertes aux snapshots IA.
Snapshots et refs
Section intitulée « Snapshots et refs »OpenClaw prend en charge deux styles de « snapshot » :
-
Snapshot IA (réfs numériques) :
openclaw browser snapshot(par défaut ;--format ai)- Sortie : un snapshot textuel incluant des références numériques.
- Actions :
openclaw browser click 12,openclaw browser type 23 "hello". - En interne, la réf est résolue via
aria-refde Playwright.
-
Snapshot de rôle (réfs de rôle 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[nth=1]en option). - Actions :
openclaw browser click e12,openclaw browser highlight e12. - En interne, la réf est résolue via
getByRole(...)(plusnth()pour les doublons). - Ajoutez
--labelspour inclure une capture d’écran de la fenêtre d’affichage avec des étiquettese12superposées. - Ajoutez
--urlslorsque le texte du lien est ambigu et que l’agent a besoin de cibles de navigation concrètes.
- Sortie : une liste/arborescence basée sur les rôles avec
-
Snapshot ARIA (réfs ARIA comme
ax12) :openclaw browser snapshot --format aria- Sortie : l’arborescence d’accessibilité sous forme de nœuds structurés.
- Actions :
openclaw browser click ax12fonctionne lorsque le chemin du snapshot peut lier la référence via les identifiants du DOM backend de Playwright et Chrome.
-
Si Playwright n’est pas disponible, les snapshots ARIA peuvent toujours être utiles pour l’inspection, mais les références peuvent ne pas être actionnables. Re-snapshottez avec
--format aiou--interactivelorsque vous avez besoin de références d’action. -
Preuve Docker pour le chemin de repli raw-CDP :
pnpm test:docker:browser-cdp-snapshotdémarre Chromium avec CDP, exécutebrowser doctor --deep, et vérifie que les snapshots de rôle incluent les URL des liens, les éléments cliquables promus par le curseur, et les métadonnées iframe.
Comportement de la référence :
- Les références ne sont pas stables lors des navigations ; si quelque chose échoue, relancez
snapshotet utilisez une référence fraîche. /actrenvoie letargetIdbrut actuel après le remplacement déclenché par l’action lorsqu’il peut prouver l’onglet de remplacement. Continuez à utiliser des identifiants/étiquettes d’onglet stables pour les commandes de suivi.- Si le snapshot de rôle a été pris avec
--frame, les références de rôle sont limitées à cette iframe jusqu’au prochain snapshot de rôle. - Les références
axNinconnues ou obsolètes échouent rapidement au lieu de passer par défaut au sélecteuraria-refde Playwright. Exécutez un nouveau snapshot sur le même onglet lorsque cela se produit.
Améliorations d’attente
Section intitulée « Améliorations d’attente »Vous pouvez attendre plus que le temps/texte :
- Attendre une URL (les globs sont 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"
Ces éléments peuvent être combinés :
openclaw browser wait "#main" \ --url "**/dash" \ --load networkidle \ --fn "window.ready===true" \ --timeout-ms 15000Workflows de débogage
Section intitulée « Workflows de débogage »Lorsqu’une action échoue (par exemple « non visible », « violation du mode strict », « couvert ») :
openclaw browser snapshot --interactive- Utilisez
click <ref>/type <ref>(privilégiez les références de rôle en mode interactif) - Si cela échoue toujours :
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- reproduire le problème
openclaw browser trace stop(afficheTRACE:<path>)
Sortie JSON
Section intitulée « Sortie JSON »--json est destiné aux scripts et aux outils structurés.
Exemples :
openclaw browser status --jsonopenclaw browser snapshot --interactive --jsonopenclaw browser requests --filter api --jsonopenclaw browser cookies --jsonLes instantanés de rôle (snapshots) au format JSON incluent refs ainsi qu’un petit bloc stats (lignes/caractères/réfs/interactif) afin que les outils puissent évaluer la taille et la densité de la charge utile.
Paramètres d’état et d’environnement
Section intitulée « Paramètres d’état et d’environnement »Ces éléments sont utiles pour les flux de travail « faire se comporter le site comme X » :
- Cookies :
cookies,cookies set,cookies clear - Stockage :
storage local|session get|set|clear - Hors ligne :
set offline on|off - En-têtes :
set headers --headers-json '{"X-Debug":"1"}'(l’ancienset headers --json '{"X-Debug":"1"}'reste pris en charge) - Authentification HTTP basique :
set credentials user pass(ou--clear) - Géolocalisation :
set geo <lat> <lon> --origin "https://example.com"(ou--clear) - Médias :
set media dark|light|no-preference|none - Fuseau horaire / langue :
set timezone ...,set locale ... - Appareil / fenêtre d’affichage (viewport) :
set device "iPhone 14"(préréglages d’appareils Playwright)set viewport 1280 720
Sécurité et confidentialité
Section intitulée « Sécurité et confidentialité »- Le profil de navigateur 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 ceci. Désactivez-le avecbrowser.evaluateEnabled=falsesi vous n’en avez pas besoin.- Utilisez
openclaw browser evaluate --timeout-ms <ms>lorsque la fonction côté page peut nécessiter plus de temps que le délai d’évaluation par défaut. - Pour les notes sur les connexions et les anti-bots (X/Twitter, etc.), consultez Browser login + X/Twitter posting.
- Gardez l’hôte Gateway/nœud privé (boucle locale ou réseau privé uniquement).
- Les points de terminaison CDP distants sont puissants ; placez-les dans un tunnel et protégez-les.
Exemple en mode strict (bloque les destinations privées/internal par défaut) :
{ browser: { ssrfPolicy: { dangerouslyAllowPrivateNetwork: false, hostnameAllowlist: ["*.example.com", "example.com"], allowedHostnames: ["localhost"], // optional exact allow }, },}Connexes
Section intitulée « Connexes »- Browser - vue d’ensemble, configuration, profils, sécurité
- Browser login - connexion aux sites
- Dépannage Browser Linux
- Dépannage Browser WSL2