Navigateur (géré par openclaw)
OpenClaw peut exécuter un profil Chrome/Brave/Edge/Chromium dédié contrôlé par l’agent. Il est isolé de votre navigateur personnel et est géré par un petit service local de contrôle à l’intérieur du Gateway (loopback uniquement). Vue débutant :- Considérez-le comme un navigateur séparé, réservé à l’agent.
- Le profil
openclawne touche pas à votre profil de navigateur personnel. - L’agent peut ouvrir des onglets, lire des pages, cliquer et saisir dans un environnement sûr.
- Le profil intégré
userse connecte à votre véritable session Chrome connectée via Chrome MCP.
Ce que vous obtenez
- Un profil de navigateur séparé nommé openclaw (accent orange par défaut).
- Contrôle déterministe des onglets (lister/ouvrir/focaliser/fermer).
- Actions de l’agent (cliquer/saisir/faire glisser/sélectionner), snapshots, captures d’écran, PDF.
- Prise en charge facultative de plusieurs profils (
openclaw,work,remote, …).
Démarrage rapide
openclaw browser a complètement disparu, ou si l’agent indique que l’outil de navigateur
n’est pas disponible, passez à Commande ou outil de navigateur manquant.
Contrôle du plugin
L’outilbrowser par défaut est désormais un plugin intégré livré activé par
défaut. Cela signifie que vous pouvez le désactiver ou le remplacer sans supprimer le reste du
système de plugins d’OpenClaw :
browser. L’expérience de navigateur par défaut nécessite les deux éléments suivants :
plugins.entries.browser.enablednon désactivébrowser.enabled=true
openclaw browser),
la méthode gateway (browser.request), l’outil de l’agent et le service de contrôle du navigateur par défaut
disparaissent tous ensemble. Votre configuration browser.* reste intacte pour qu’un
plugin de remplacement puisse la réutiliser.
Le plugin de navigateur intégré possède désormais aussi l’implémentation d’exécution du navigateur.
Le cœur ne conserve que les helpers partagés du Plugin SDK ainsi que des réexportations de compatibilité pour les
anciens chemins d’importation internes. En pratique, supprimer ou remplacer le package du plugin de navigateur
supprime l’ensemble des fonctionnalités du navigateur au lieu de laisser derrière lui un second runtime
appartenant au cœur.
Les modifications de configuration du navigateur nécessitent toujours un redémarrage du Gateway afin que le plugin intégré
puisse réenregistrer son service de navigateur avec les nouveaux paramètres.
Commande ou outil de navigateur manquant
Siopenclaw browser devient soudainement une commande inconnue après une mise à niveau, ou
si l’agent signale que l’outil de navigateur est manquant, la cause la plus fréquente est une liste
plugins.allow restrictive qui n’inclut pas browser.
Exemple de configuration cassée :
browser à la liste d’autorisation des plugins :
browser.enabled=truene suffit pas à lui seul lorsqueplugins.allowest défini.plugins.entries.browser.enabled=truene suffit pas non plus à lui seul lorsqueplugins.allowest défini.tools.alsoAllow: ["browser"]ne charge pas le plugin de navigateur intégré. Cela ajuste seulement la politique des outils une fois le plugin déjà chargé.- Si vous n’avez pas besoin d’une liste d’autorisation restrictive pour les plugins, supprimer
plugins.allowrétablit aussi le comportement par défaut du navigateur intégré.
openclaw browserest une commande inconnue.browser.requestest manquant.- L’agent signale que l’outil de navigateur est indisponible ou manquant.
Profils : openclaw vs user
openclaw: navigateur géré et isolé (aucune extension requise).user: profil intégré de connexion Chrome MCP à votre véritable Chrome connecté session.
- Par défaut : utilisez le navigateur isolé
openclaw. - Préférez
profile="user"lorsque les sessions déjà connectées comptent et que l’utilisateur est devant l’ordinateur pour cliquer/approuver toute invite de connexion. profileest la surcharge explicite lorsque vous voulez un mode de navigateur spécifique.
browser.defaultProfile: "openclaw" si vous voulez le mode géré par défaut.
Configuration
Les paramètres du navigateur se trouvent dans~/.openclaw/openclaw.json.
- Le service de contrôle du navigateur se lie au loopback sur un port dérivé de
gateway.port(par défaut :18791, soit gateway + 2). - Si vous surchargez le port du Gateway (
gateway.portouOPENCLAW_GATEWAY_PORT), les ports de navigateur dérivés se décalent pour rester dans la même « famille ». cdpUrlutilise par défaut le port CDP local géré lorsqu’il n’est pas défini.remoteCdpTimeoutMss’applique aux vérifications d’accessibilité CDP distantes (non loopback).remoteCdpHandshakeTimeoutMss’applique aux vérifications d’accessibilité de handshake WebSocket CDP distantes.- La navigation/l’ouverture d’onglet du navigateur est protégée contre la SSRF avant la navigation et revérifiée au mieux sur l’URL finale
http(s)après la navigation. - En mode SSRF strict, la découverte/les sondes de point de terminaison CDP distant (
cdpUrl, y compris les recherches/json/version) sont également vérifiées. browser.ssrfPolicy.dangerouslyAllowPrivateNetworkvauttruepar défaut (modèle de réseau de confiance). Définissez-le surfalsepour une navigation stricte sur l’Internet public uniquement.browser.ssrfPolicy.allowPrivateNetworkreste pris en charge comme alias hérité pour compatibilité.attachOnly: truesignifie « ne jamais lancer un navigateur local ; s’y attacher uniquement s’il est déjà en cours d’exécution ».color+colorpar profil teintent l’interface du navigateur afin que vous puissiez voir quel profil est actif.- Le profil par défaut est
openclaw(navigateur autonome géré par OpenClaw). UtilisezdefaultProfile: "user"pour opter pour le navigateur connecté de l’utilisateur. - Ordre de détection automatique : navigateur système par défaut s’il est basé sur Chromium ; sinon Chrome → Brave → Edge → Chromium → Chrome Canary.
- Les profils locaux
openclawattribuent automatiquementcdpPort/cdpUrl— définissez-les uniquement pour le CDP distant. driver: "existing-session"utilise Chrome DevTools MCP au lieu du CDP brut. Ne définissez pascdpUrlpour ce driver.- Définissez
browser.profiles.<name>.userDataDirlorsqu’un profil existing-session doit se connecter à un profil utilisateur Chromium non par défaut tel que Brave ou Edge.
Utiliser Brave (ou un autre navigateur basé sur Chromium)
Si votre navigateur système par défaut est basé sur Chromium (Chrome/Brave/Edge/etc), OpenClaw l’utilise automatiquement. Définissezbrowser.executablePath pour surcharger
la détection automatique :
Exemple CLI :
Contrôle local vs distant
- Contrôle local (par défaut) : le Gateway démarre le service de contrôle loopback et peut lancer un navigateur local.
- Contrôle distant (hôte de nœud) : exécutez un hôte de nœud sur la machine qui possède le navigateur ; le Gateway y proxifie les actions du navigateur.
- CDP distant : définissez
browser.profiles.<name>.cdpUrl(oubrowser.cdpUrl) pour vous connecter à un navigateur distant basé sur Chromium. Dans ce cas, OpenClaw ne lancera pas de navigateur local.
- profils locaux gérés :
openclaw browser stoparrête le processus du navigateur que OpenClaw a lancé - profils attach-only et CDP distant :
openclaw browser stopferme la session de contrôle active et libère les surcharges d’émulation Playwright/CDP (viewport, schéma de couleurs, langue, fuseau horaire, mode hors ligne et état similaire), même si aucun processus de navigateur n’a été lancé par OpenClaw
- Jetons de requête (par ex.
https://provider.example?token=<token>) - Authentification HTTP Basic (par ex.
https://user:pass@provider.example)
/json/* et lors de la connexion
au WebSocket CDP. Préférez les variables d’environnement ou les gestionnaires de secrets pour les
jetons au lieu de les commit dans les fichiers de configuration.
Proxy de navigateur de nœud (zéro configuration par défaut)
Si vous exécutez un hôte de nœud sur la machine qui possède votre navigateur, OpenClaw peut acheminer automatiquement les appels d’outil de navigateur vers ce nœud sans configuration supplémentaire du navigateur. C’est le chemin par défaut pour les gateways distants. Remarques :- L’hôte de nœud expose son serveur local de contrôle du navigateur via une commande proxy.
- Les profils proviennent de la propre configuration
browser.profilesdu nœud (identique au local). nodeHost.browserProxy.allowProfilesest facultatif. Laissez-le vide pour le comportement hérité/par défaut : tous les profils configurés restent accessibles via le proxy, y compris les routes de création/suppression de profils.- Si vous définissez
nodeHost.browserProxy.allowProfiles, OpenClaw le traite comme une limite de moindre privilège : seuls les profils de la liste d’autorisation peuvent être ciblés, et les routes persistantes de création/suppression de profils sont bloquées sur la surface proxy. - Désactivez-le si vous n’en voulez pas :
- Sur le nœud :
nodeHost.browserProxy.enabled=false - Sur le gateway :
gateway.nodes.browser.mode="off"
- Sur le nœud :
Browserless (CDP distant hébergé)
Browserless est un service Chromium hébergé qui expose des URL de connexion CDP via HTTPS et WebSocket. OpenClaw peut utiliser l’une ou l’autre forme, mais pour un profil de navigateur distant, l’option la plus simple est l’URL WebSocket directe de la documentation de connexion de Browserless. Exemple :- Remplacez
<BROWSERLESS_API_KEY>par votre véritable jeton Browserless. - Choisissez le point de terminaison régional correspondant à votre compte Browserless (voir leur documentation).
- Si Browserless vous fournit une URL de base HTTPS, vous pouvez soit la convertir en
wss://pour une connexion CDP directe, soit conserver l’URL HTTPS et laisser OpenClaw découvrir/json/version.
Providers CDP WebSocket directs
Certains services de navigateur hébergés exposent un point de terminaison WebSocket direct plutôt que la découverte CDP standard basée sur HTTP (/json/version). OpenClaw prend en charge les deux :
- Points de terminaison HTTP(S) — OpenClaw appelle
/json/versionpour découvrir l’URL du débogueur WebSocket, puis s’y connecte. - Points de terminaison WebSocket (
ws:///wss://) — OpenClaw s’y connecte directement, en ignorant/json/version. Utilisez cela pour des services comme Browserless, Browserbase, ou tout provider qui vous fournit une URL WebSocket.
Browserbase
Browserbase est une plateforme cloud pour exécuter des navigateurs headless avec résolution intégrée de CAPTCHA, mode furtif et proxies résidentiels.- Inscrivez-vous et copiez votre clé API depuis le tableau de bord Overview.
- Remplacez
<BROWSERBASE_API_KEY>par votre véritable clé API Browserbase. - Browserbase crée automatiquement une session de navigateur à la connexion WebSocket, donc aucune étape manuelle de création de session n’est nécessaire.
- Le niveau gratuit autorise une session simultanée et une heure de navigateur par mois. Consultez les tarifs pour les limites des forfaits payants.
- Consultez la documentation Browserbase pour la référence API complète, les guides SDK et les exemples d’intégration.
Sécurité
Idées clés :- Le contrôle du navigateur est limité au loopback ; l’accès passe par l’authentification du Gateway ou l’appairage de nœud.
- L’API HTTP autonome de navigateur en loopback utilise uniquement une authentification à secret partagé :
authentification bearer par jeton gateway,
x-openclaw-password, ou authentification HTTP Basic avec le mot de passe gateway configuré. - Les en-têtes d’identité Tailscale Serve et
gateway.auth.mode: "trusted-proxy"n’authentifient pas cette API autonome de navigateur en loopback. - Si le contrôle du navigateur est activé et qu’aucune authentification à secret partagé n’est configurée, OpenClaw
génère automatiquement
gateway.auth.tokenau démarrage et le persiste dans la configuration. - OpenClaw ne génère pas automatiquement ce jeton lorsque
gateway.auth.modevaut déjàpassword,noneoutrusted-proxy. - Conservez le Gateway et tous les hôtes de nœud sur un réseau privé (Tailscale) ; évitez toute exposition publique.
- Traitez les URL/jetons CDP distants comme des secrets ; préférez les variables d’environnement ou un gestionnaire de secrets.
- Préférez des points de terminaison chiffrés (HTTPS ou WSS) et des jetons de courte durée de vie lorsque c’est possible.
- Évitez d’intégrer directement des jetons de longue durée dans les fichiers de configuration.
Profils (multi-navigateurs)
OpenClaw prend en charge plusieurs profils nommés (configurations de routage). Les profils peuvent être :- gérés par openclaw : une instance dédiée de navigateur basé sur Chromium avec son propre répertoire de données utilisateur + port CDP
- distant : une URL CDP explicite (navigateur basé sur Chromium exécuté ailleurs)
- session existante : votre profil Chrome existant via auto-connexion Chrome DevTools MCP
- Le profil
openclawest créé automatiquement s’il est absent. - Le profil
userest intégré pour la connexion existing-session via Chrome MCP. - Les profils existing-session sont opt-in au-delà de
user; créez-les avec--driver existing-session. - Les ports CDP locaux sont alloués dans la plage 18800–18899 par défaut.
- Supprimer un profil déplace son répertoire de données local vers la corbeille.
?profile=<name> ; la CLI utilise --browser-profile.
Existing-session via Chrome DevTools MCP
OpenClaw peut également se connecter à un profil de navigateur basé sur Chromium en cours d’exécution via le serveur officiel Chrome DevTools MCP. Cela réutilise les onglets et l’état de connexion déjà ouverts dans ce profil de navigateur. Références officielles de contexte et de configuration : Profil intégré :user
- Le profil intégré
userutilise l’auto-connexion Chrome MCP, qui cible le profil local Google Chrome par défaut.
userDataDir pour Brave, Edge, Chromium ou un profil Chrome non par défaut :
- Ouvrez la page d’inspection de ce navigateur pour le débogage à distance.
- Activez le débogage à distance.
- Laissez le navigateur ouvert et approuvez l’invite de connexion quand OpenClaw s’y attache.
- Chrome :
chrome://inspect/#remote-debugging - Brave :
brave://inspect/#remote-debugging - Edge :
edge://inspect/#remote-debugging
statusaffichedriver: existing-sessionstatusaffichetransport: chrome-mcpstatusafficherunning: truetabsliste les onglets déjà ouverts dans votre navigateursnapshotrenvoie des refs à partir de l’onglet actif sélectionné
- le navigateur cible basé sur Chromium est en version
144+ - le débogage à distance est activé dans la page d’inspection de ce navigateur
- le navigateur a affiché l’invite de consentement à la connexion et vous l’avez acceptée
openclaw doctormigre l’ancienne configuration de navigateur basée sur extension et vérifie que Chrome est installé localement pour les profils d’auto-connexion par défaut, mais il ne peut pas activer pour vous le débogage à distance côté navigateur
- Utilisez
profile="user"lorsque vous avez besoin de l’état du navigateur connecté de l’utilisateur. - Si vous utilisez un profil existing-session personnalisé, passez ce nom de profil explicite.
- Choisissez ce mode uniquement lorsque l’utilisateur est devant l’ordinateur pour approuver l’invite de connexion.
- le Gateway ou l’hôte de nœud peut lancer
npx chrome-devtools-mcp@latest --autoConnect
- Cette voie est plus risquée que le profil isolé
openclawcar elle peut agir dans votre session de navigateur connectée. - OpenClaw ne lance pas le navigateur pour ce driver ; il se connecte uniquement à une session existante.
- OpenClaw utilise ici le flux officiel
--autoConnectde Chrome DevTools MCP. SiuserDataDirest défini, OpenClaw le transmet pour cibler ce répertoire explicite de données utilisateur Chromium. - Les captures d’écran existing-session prennent en charge les captures de page et les captures d’élément
--refà partir des snapshots, mais pas les sélecteurs CSS--element. - Les captures d’écran de page existing-session fonctionnent sans Playwright via Chrome MCP.
Les captures d’élément basées sur des refs (
--ref) y fonctionnent aussi, mais--full-pagene peut pas être combiné avec--refou--element. - Les actions existing-session restent plus limitées que la voie du navigateur géré :
click,type,hover,scrollIntoView,dragetselectnécessitent des refs de snapshot au lieu de sélecteurs CSSclickest limité au bouton gauche (pas de surcharge de bouton ni de modificateurs)typene prend pas en chargeslowly=true; utilisezfilloupresspressne prend pas en chargedelayMshover,scrollIntoView,drag,select,filletevaluatene prennent pas en charge les surcharges de délai d’attente par appelselectne prend actuellement en charge qu’une seule valeur
wait --urlen existing-session prend en charge les motifs exacts, de sous-chaîne et glob comme les autres drivers de navigateur.wait --load networkidlen’est pas encore pris en charge.- Les hooks d’upload existing-session nécessitent
refouinputRef, prennent en charge un seul fichier à la fois, et ne prennent pas en charge le ciblage CSSelement. - Les hooks de boîte de dialogue existing-session ne prennent pas en charge les surcharges de délai d’attente.
- Certaines fonctionnalités nécessitent toujours la voie du navigateur géré, notamment les
actions par lots, l’export PDF, l’interception de téléchargement et
responsebody. - Existing-session est local à l’hôte. Si Chrome se trouve sur une autre machine ou dans un autre espace de noms réseau, utilisez plutôt le CDP distant ou un hôte de nœud.
Garanties d’isolation
- Répertoire de données utilisateur dédié : ne touche jamais à votre profil de navigateur personnel.
- Ports dédiés : évite
9222pour prévenir les collisions avec les workflows de développement. - Contrôle déterministe des onglets : cible les onglets par
targetId, pas par « dernier onglet ».
Sélection du navigateur
Lors du lancement local, OpenClaw choisit le premier disponible :- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Plateformes :
- macOS : vérifie
/Applicationset~/Applications. - Linux : recherche
google-chrome,brave,microsoft-edge,chromium, etc. - Windows : vérifie les emplacements d’installation courants.
API de contrôle (facultatif)
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 du navigateur exigent aussi une authentification :
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>ou authentification HTTP Basic avec ce mot de passe
- Cette API autonome de navigateur en loopback ne consomme pas les en-têtes d’identité trusted-proxy ou Tailscale Serve.
- Si
gateway.auth.modevautnoneoutrusted-proxy, ces routes de navigateur en loopback n’héritent pas de ces modes porteurs d’identité ; gardez-les limitées au loopback.
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 points de terminaison 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 existing-session basées sur
--refà partir de la sortie de snapshot
navigateact- AI snapshots / role snapshots
- Captures d’écran d’élément par 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, installez le package complet
Playwright (pas playwright-core) et redémarrez le gateway, ou réinstallez
OpenClaw avec la prise en charge du navigateur.
Installation de Playwright dans Docker
Si votre Gateway s’exécute dans Docker, éviteznpx playwright (conflits d’override npm).
Utilisez plutôt la CLI intégrée :
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 bind. Voir Docker.
Fonctionnement (interne)
Flux de haut niveau :- Un petit serveur de contrôle accepte les requêtes HTTP.
- Il se connecte aux navigateurs basés sur Chromium (Chrome/Brave/Edge/Chromium) via CDP.
- Pour les actions avancées (click/type/snapshot/PDF), il utilise Playwright au-dessus de CDP.
- Lorsque Playwright est absent, seules les opérations sans Playwright sont disponibles.
Référence rapide CLI
Toutes les commandes acceptent--browser-profile <name> pour cibler un profil spécifique.
Toutes les commandes acceptent également --json pour une sortie lisible par machine (payloads stables).
Bases :
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
- Pour les profils attach-only et CDP distants,
openclaw browser stopreste la bonne commande de nettoyage après les tests. Elle ferme la session de contrôle active et efface les surcharges temporaires d’émulation au lieu de tuer le navigateur sous-jacent. 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"
uploadetdialogsont des appels d’armement ; exécutez-les avant le click/la pression qui déclenche le sélecteur/la boîte de dialogue.- Les chemins de sortie de téléchargement et de trace sont limités aux racines temporaires OpenClaw :
- traces :
/tmp/openclaw(repli :${os.tmpdir()}/openclaw) - téléchargements :
/tmp/openclaw/downloads(repli :${os.tmpdir()}/openclaw/downloads)
- traces :
- Les chemins d’upload sont limités à une racine temporaire d’uploads OpenClaw :
- uploads :
/tmp/openclaw/uploads(repli :${os.tmpdir()}/openclaw/uploads)
- uploads :
uploadpeut aussi définir directement des entrées de fichier via--input-refou--element.snapshot:--format ai(par défaut lorsque Playwright est installé) : renvoie un AI snapshot avec des refs numériques (aria-ref="<n>").--format aria: renvoie l’arbre d’accessibilité (sans refs ; inspection uniquement).--efficient(ou--mode efficient) : preset compact de role snapshot (interactive + compact + depth + maxChars réduit).- Valeur par défaut de configuration (outil/CLI uniquement) : définissez
browser.snapshotDefaults.mode: "efficient"pour utiliser des snapshots efficaces lorsque l’appelant ne passe pas de mode (voir Configuration du Gateway). - Les options de role snapshot (
--interactive,--compact,--depth,--selector) forcent un snapshot basé sur les rôles avec des refs commeref=e12. --frame "<iframe selector>"limite les role snapshots à un iframe (associé à des refs de rôle commee12).--interactiveproduit une liste plate, facile à sélectionner, d’éléments interactifs (le mieux pour piloter des actions).--labelsajoute une capture d’écran du viewport avec des libellés de ref superposés (afficheMEDIA:<path>).
click/type/etc nécessitent unerefprovenant desnapshot(soit numérique12, soit ref de rôlee12). Les sélecteurs CSS ne sont volontairement pas pris en charge pour les actions.
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 (refs 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 é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 libellése12superposés.
- 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 ref fraîche. - Si le role snapshot a été pris avec
--frame, les refs de rôle sont limitées à cet iframe jusqu’au prochain role snapshot.
Super-pouvoirs de wait
Vous pouvez attendre plus que simplement du temps/du 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 refs de rôle en mode interactif) - Si cela échoue encore :
openclaw browser highlight <ref>pour voir ce que Playwright cible - Si la page se comporte de façon étrange :
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é aux scripts et aux outils structurés.
Exemples :
refs ainsi qu’un petit bloc stats (lines/chars/refs/interactive) afin que les outils puissent raisonner sur la taille et la densité du payload.
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 - 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 basic :
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 / viewport :
set device "iPhone 14"(presets d’appareil Playwright)set viewport 1280 720
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. Une injection de prompt peut orienter cela. Désactivez-le avecbrowser.evaluateEnabled=falsesi vous n’en avez pas besoin.- Pour les connexions et les notes anti-bot (X/Twitter, etc.), consultez Connexion navigateur + publication X/Twitter.
- Gardez le Gateway/l’hôte de nœud privé (loopback ou tailnet uniquement).
- Les points de terminaison CDP distants sont puissants ; tunnelisez-les et protégez-les.
Dépannage
Pour les problèmes spécifiques à Linux (en particulier snap Chromium), consultez Dépannage du navigateur. Pour les configurations WSL2 Gateway + Chrome Windows sur hôtes séparés, consultez Dépannage WSL2 + Windows + Chrome CDP distant.Outils d’agent + fonctionnement du contrôle
L’agent reçoit un outil pour l’automatisation du navigateur :browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotrenvoie un arbre d’interface stable (AI ou ARIA).browser actutilise les IDrefdu snapshot pour cliquer/saisir/faire glisser/sélectionner.browser screenshotcapture les pixels (page complète ou élément).browseraccepte :profilepour choisir un profil de navigateur nommé (openclaw, chrome ou CDP distant).target(sandbox|host|node) pour sélectionner l’emplacement du navigateur.- Dans les sessions en sandbox,
target: "host"nécessiteagents.defaults.sandbox.browser.allowHostControl=true. - Si
targetest omis : les sessions en sandbox utilisent par défautsandbox, les sessions hors sandbox utilisent par défauthost. - Si un nœud capable de gérer le navigateur est connecté, l’outil peut y être acheminé automatiquement sauf si vous fixez
target="host"outarget="node".
Liens associés
- Vue d’ensemble des outils — tous les outils d’agent disponibles
- Sandboxing — contrôle du navigateur dans des environnements sandboxés
- Sécurité — risques et durcissement du contrôle du navigateur