Browser (gestito da openclaw)
OpenClaw può eseguire un profilo Chrome/Brave/Edge/Chromium dedicato controllato dall’agente. È isolato dal tuo browser personale ed è gestito tramite un piccolo servizio di controllo locale all’interno del Gateway (solo loopback). Vista per principianti:- Consideralo come un browser separato, solo per l’agente.
- Il profilo
openclawnon tocca il profilo del tuo browser personale. - L’agente può aprire schede, leggere pagine, fare clic e digitare in un percorso sicuro.
- Il profilo integrato
usersi collega alla tua vera sessione Chrome autenticata tramite Chrome MCP.
Cosa ottieni
- Un profilo browser separato chiamato openclaw (accento arancione per impostazione predefinita).
- Controllo deterministico delle schede (elenco/apri/metti a fuoco/chiudi).
- Azioni dell’agente (clic/digita/trascina/seleziona), snapshot, screenshot, PDF.
- Supporto opzionale per più profili (
openclaw,work,remote, …).
Avvio rapido
openclaw browser manca del tutto, oppure l’agente dice che lo strumento browser
non è disponibile, vai a Comando o strumento browser mancante.
Controllo del plugin
Lo strumentobrowser predefinito ora è un plugin incluso che viene distribuito abilitato per
impostazione predefinita. Questo significa che puoi disabilitarlo o sostituirlo senza rimuovere il resto del
sistema di plugin di OpenClaw:
browser. L’esperienza browser predefinita richiede entrambi:
plugins.entries.browser.enablednon disabilitatobrowser.enabled=true
openclaw browser),
il metodo gateway (browser.request), lo strumento dell’agente e il servizio di controllo browser
predefinito scompaiono tutti insieme. La tua configurazione browser.* rimane intatta per essere riutilizzata da un
plugin sostitutivo.
Il plugin browser incluso ora possiede anche l’implementazione runtime del browser.
Il core conserva solo helper condivisi del Plugin SDK più re-export di compatibilità per
vecchi percorsi di importazione interni. In pratica, rimuovere o sostituire il pacchetto plugin browser
rimuove l’insieme delle funzionalità browser invece di lasciare dietro una seconda implementazione runtime
posseduta dal core.
Le modifiche alla configurazione del browser richiedono comunque un riavvio del Gateway affinché il plugin incluso
possa registrare nuovamente il suo servizio browser con le nuove impostazioni.
Comando o strumento browser mancante
Seopenclaw browser diventa improvvisamente un comando sconosciuto dopo un aggiornamento, oppure
l’agente segnala che lo strumento browser manca, la causa più comune è una
lista plugins.allow restrittiva che non include browser.
Esempio di configurazione errata:
browser alla allowlist dei plugin:
browser.enabled=trueda solo non è sufficiente quando è impostatoplugins.allow.- Anche
plugins.entries.browser.enabled=trueda solo non è sufficiente quando è impostatoplugins.allow. tools.alsoAllow: ["browser"]non carica il plugin browser incluso. Regola soltanto la policy degli strumenti dopo che il plugin è già stato caricato.- Se non hai bisogno di una allowlist restrittiva dei plugin, rimuovere
plugins.allowripristina anche il comportamento predefinito del browser incluso.
openclaw browserè un comando sconosciuto.browser.requestmanca.- L’agente segnala che lo strumento browser non è disponibile o manca.
Profili: openclaw vs user
openclaw: browser gestito e isolato (nessuna estensione richiesta).user: profilo di collegamento Chrome MCP integrato per la tua vera sessione Chrome autenticata.
- Predefinito: usa il browser isolato
openclaw. - Preferisci
profile="user"quando le sessioni già autenticate sono importanti e l’utente è al computer per fare clic/approvare eventuali richieste di collegamento. profileè la sovrascrittura esplicita quando vuoi una modalità browser specifica.
browser.defaultProfile: "openclaw" se vuoi la modalità gestita come predefinita.
Configurazione
Le impostazioni del browser si trovano in~/.openclaw/openclaw.json.
- Il servizio di controllo browser si collega al loopback su una porta derivata da
gateway.port(predefinita:18791, che corrisponde a gateway + 2). - Se sovrascrivi la porta del Gateway (
gateway.portoOPENCLAW_GATEWAY_PORT), le porte browser derivate si spostano per rimanere nella stessa “famiglia”. cdpUrlusa per impostazione predefinita la porta CDP locale gestita quando non è impostato.remoteCdpTimeoutMssi applica ai controlli di raggiungibilità CDP remota (non loopback).remoteCdpHandshakeTimeoutMssi applica ai controlli di raggiungibilità WebSocket CDP remoti.- La navigazione/apertura scheda del browser è protetta contro SSRF prima della navigazione e ricontrollata al meglio sull’URL finale
http(s)dopo la navigazione. - In modalità SSRF rigida vengono controllati anche il rilevamento/sonde degli endpoint CDP remoti (
cdpUrl, incluse le ricerche/json/version). browser.ssrfPolicy.dangerouslyAllowPrivateNetworkètrueper impostazione predefinita (modello trusted-network). Impostalo sufalseper una navigazione rigorosa solo pubblica.browser.ssrfPolicy.allowPrivateNetworkresta supportato come alias legacy per compatibilità.attachOnly: truesignifica “non avviare mai un browser locale; collegarsi solo se è già in esecuzione.”color+colorper profilo colorano l’interfaccia del browser così puoi vedere quale profilo è attivo.- Il profilo predefinito è
openclaw(browser standalone gestito da OpenClaw). UsadefaultProfile: "user"per scegliere il browser utente autenticato. - Ordine di rilevamento automatico: browser predefinito di sistema se basato su Chromium; altrimenti Chrome → Brave → Edge → Chromium → Chrome Canary.
- I profili
openclawlocali assegnano automaticamentecdpPort/cdpUrl— impostali solo per CDP remoto. driver: "existing-session"usa Chrome DevTools MCP invece del CDP grezzo. Non impostarecdpUrlper quel driver.- Imposta
browser.profiles.<name>.userDataDirquando un profilo existing-session deve collegarsi a un profilo utente Chromium non predefinito come Brave o Edge.
Usare Brave (o un altro browser basato su Chromium)
Se il tuo browser predefinito di sistema è basato su Chromium (Chrome/Brave/Edge/ecc.), OpenClaw lo usa automaticamente. Impostabrowser.executablePath per sovrascrivere il
rilevamento automatico:
Esempio CLI:
Controllo locale vs remoto
- Controllo locale (predefinito): il Gateway avvia il servizio di controllo loopback e può avviare un browser locale.
- Controllo remoto (host del nodo): esegui un host del nodo sulla macchina che ha il browser; il Gateway inoltra le azioni del browser a esso.
- CDP remoto: imposta
browser.profiles.<name>.cdpUrl(oppurebrowser.cdpUrl) per collegarti a un browser remoto basato su Chromium. In questo caso, OpenClaw non avvierà un browser locale.
- profili gestiti locali:
openclaw browser stoparresta il processo browser che OpenClaw ha avviato - profili attach-only e CDP remoti:
openclaw browser stopchiude la sessione di controllo attiva e rilascia le sovrascritture di emulazione Playwright/CDP (viewport, schema colori, impostazioni locali, fuso orario, modalità offline e stato simile), anche se nessun processo browser è stato avviato da OpenClaw
- Token in query (ad es.
https://provider.example?token=<token>) - HTTP Basic auth (ad es.
https://user:pass@provider.example)
/json/* e quando si collega
al WebSocket CDP. Preferisci variabili d’ambiente o gestori di segreti per i
token invece di salvarli nei file di configurazione.
Proxy browser del nodo (predefinito zero-config)
Se esegui un host del nodo sulla macchina che ha il browser, OpenClaw può instradare automaticamente le chiamate allo strumento browser verso quel nodo senza alcuna configurazione browser aggiuntiva. Questo è il percorso predefinito per i Gateway remoti. Note:- L’host del nodo espone il proprio server locale di controllo browser tramite un comando proxy.
- I profili provengono dalla configurazione
browser.profilesdel nodo stesso (uguale a quella locale). nodeHost.browserProxy.allowProfilesè facoltativo. Lascialo vuoto per il comportamento legacy/predefinito: tutti i profili configurati restano raggiungibili tramite il proxy, comprese le route di creazione/eliminazione profilo.- Se imposti
nodeHost.browserProxy.allowProfiles, OpenClaw lo tratta come un confine di privilegio minimo: solo i profili nella allowlist possono essere destinati e le route persistenti di creazione/eliminazione profilo vengono bloccate sulla superficie proxy. - Disabilitalo se non lo vuoi:
- Sul nodo:
nodeHost.browserProxy.enabled=false - Sul gateway:
gateway.nodes.browser.mode="off"
- Sul nodo:
Browserless (CDP remoto ospitato)
Browserless è un servizio Chromium ospitato che espone URL di connessione CDP tramite HTTPS e WebSocket. OpenClaw può usare entrambe le forme, ma per un profilo browser remoto l’opzione più semplice è l’URL WebSocket diretto dalla documentazione di connessione di Browserless. Esempio:- Sostituisci
<BROWSERLESS_API_KEY>con il tuo vero token Browserless. - Scegli l’endpoint regionale corrispondente al tuo account Browserless (vedi la loro documentazione).
- Se Browserless ti fornisce un URL base HTTPS, puoi convertirlo in
wss://per una connessione CDP diretta oppure mantenere l’URL HTTPS e lasciare che OpenClaw scopra/json/version.
Provider CDP WebSocket diretti
Alcuni servizi browser ospitati espongono un endpoint WebSocket diretto invece del rilevamento CDP standard basato su HTTP (/json/version). OpenClaw supporta entrambi:
- Endpoint HTTP(S) — OpenClaw chiama
/json/versionper scoprire l’URL WebSocket del debugger, quindi si collega. - Endpoint WebSocket (
ws:///wss://) — OpenClaw si collega direttamente, saltando/json/version. Usalo per servizi come Browserless, Browserbase, o qualsiasi provider che ti fornisca un URL WebSocket.
Browserbase
Browserbase è una piattaforma cloud per eseguire browser headless con risoluzione CAPTCHA integrata, modalità stealth e proxy residenziali.- Registrati e copia la tua API Key dalla dashboard Overview.
- Sostituisci
<BROWSERBASE_API_KEY>con la tua vera chiave API Browserbase. - Browserbase crea automaticamente una sessione browser alla connessione WebSocket, quindi non è necessario alcun passaggio manuale di creazione sessione.
- Il livello gratuito consente una sessione concorrente e un’ora di browser al mese. Vedi i prezzi per i limiti dei piani a pagamento.
- Consulta la documentazione Browserbase per il riferimento API completo, le guide SDK e gli esempi di integrazione.
Sicurezza
Concetti chiave:- Il controllo browser è solo loopback; l’accesso passa tramite l’autenticazione del Gateway o l’associazione del nodo.
- L’API HTTP browser standalone su loopback usa solo autenticazione con segreto condiviso:
autenticazione bearer con token gateway,
x-openclaw-password, oppure HTTP Basic auth con la password gateway configurata. - Gli header di identità Tailscale Serve e
gateway.auth.mode: "trusted-proxy"non autenticano questa API browser standalone su loopback. - Se il controllo browser è abilitato e non è configurata alcuna autenticazione con segreto condiviso, OpenClaw
genera automaticamente
gateway.auth.tokenall’avvio e lo salva nella configurazione. - OpenClaw non genera automaticamente quel token quando
gateway.auth.modeè giàpassword,noneotrusted-proxy. - Mantieni il Gateway e gli eventuali host del nodo su una rete privata (Tailscale); evita l’esposizione pubblica.
- Tratta URL/token CDP remoti come segreti; preferisci variabili d’ambiente o un gestore di segreti.
- Preferisci endpoint cifrati (HTTPS o WSS) e token di breve durata quando possibile.
- Evita di incorporare token di lunga durata direttamente nei file di configurazione.
Profili (multi-browser)
OpenClaw supporta più profili nominati (configurazioni di instradamento). I profili possono essere:- gestiti da openclaw: un’istanza browser dedicata basata su Chromium con propria directory dati utente + porta CDP
- remoti: un URL CDP esplicito (browser basato su Chromium in esecuzione altrove)
- sessione esistente: il tuo profilo Chrome esistente tramite collegamento automatico Chrome DevTools MCP
- Il profilo
openclawviene creato automaticamente se manca. - Il profilo
userè integrato per il collegamento existing-session di Chrome MCP. - I profili existing-session sono opt-in oltre a
user; creali con--driver existing-session. - Le porte CDP locali vengono allocate nell’intervallo 18800–18899 per impostazione predefinita.
- L’eliminazione di un profilo sposta la sua directory dati locale nel Cestino.
?profile=<name>; la CLI usa --browser-profile.
Existing-session tramite Chrome DevTools MCP
OpenClaw può anche collegarsi a un profilo browser basato su Chromium in esecuzione tramite il server ufficiale Chrome DevTools MCP. Questo riutilizza le schede e lo stato di accesso già aperti in quel profilo browser. Riferimenti ufficiali di contesto e configurazione: Profilo integrato:user
- Il profilo integrato
userusa il collegamento automatico Chrome MCP, che punta al profilo locale predefinito di Google Chrome.
userDataDir per Brave, Edge, Chromium o un profilo Chrome non predefinito:
- Apri la pagina inspect di quel browser per il debug remoto.
- Abilita il debug remoto.
- Tieni il browser in esecuzione e approva la richiesta di connessione quando OpenClaw si collega.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statusmostradriver: existing-sessionstatusmostratransport: chrome-mcpstatusmostrarunning: truetabselenca le tue schede browser già apertesnapshotrestituisce ref dalla scheda live selezionata
- il browser di destinazione basato su Chromium è alla versione
144+ - il debug remoto è abilitato nella pagina inspect di quel browser
- il browser ha mostrato e tu hai accettato la richiesta di consenso al collegamento
openclaw doctormigra la vecchia configurazione browser basata su estensione e controlla che Chrome sia installato localmente per i profili predefiniti con collegamento automatico, ma non può abilitare il debug remoto lato browser al posto tuo
- Usa
profile="user"quando hai bisogno dello stato del browser autenticato dell’utente. - Se usi un profilo existing-session personalizzato, passa quel nome di profilo esplicito.
- Scegli questa modalità solo quando l’utente è al computer per approvare la richiesta di collegamento.
- il Gateway o l’host del nodo possono avviare
npx chrome-devtools-mcp@latest --autoConnect
- Questo percorso è più rischioso del profilo isolato
openclawperché può agire all’interno della tua sessione browser autenticata. - OpenClaw non avvia il browser per questo driver; si collega solo a una sessione esistente.
- OpenClaw usa qui il flusso ufficiale Chrome DevTools MCP
--autoConnect. SeuserDataDirè impostato, OpenClaw lo passa per puntare a quella specifica directory dati utente Chromium. - Gli screenshot existing-session supportano acquisizioni di pagina e acquisizioni di elemento con
--refdagli output snapshot, ma non selettori CSS--element. - Gli screenshot di pagina existing-session funzionano senza Playwright tramite Chrome MCP.
Anche gli screenshot di elementi basati su ref (
--ref) funzionano lì, ma--full-pagenon può essere combinato con--refo--element. - Le azioni existing-session sono ancora più limitate rispetto al percorso del browser gestito:
click,type,hover,scrollIntoView,drageselectrichiedono ref dello snapshot invece di selettori CSSclicksupporta solo il pulsante sinistro (nessuna sovrascrittura del pulsante o modificatori)typenon supportaslowly=true; usafillopresspressnon supportadelayMshover,scrollIntoView,drag,select,filledevaluatenon supportano sovrascritture del timeout per chiamataselectal momento supporta un solo valore
- Existing-session
wait --urlsupporta pattern esatti, per sottostringa e glob come gli altri driver browser.wait --load networkidlenon è ancora supportato. - Gli hook di upload existing-session richiedono
refoinputRef, supportano un file alla volta e non supportano il targeting CSSelement. - Gli hook di dialog existing-session non supportano sovrascritture del timeout.
- Alcune funzionalità richiedono ancora il percorso del browser gestito, incluse azioni batch,
esportazione PDF, intercettazione dei download e
responsebody. - Existing-session è locale all’host. Se Chrome si trova su una macchina diversa o in uno spazio dei nomi di rete diverso, usa invece CDP remoto o un host del nodo.
Garanzie di isolamento
- Directory dati utente dedicata: non tocca mai il profilo del tuo browser personale.
- Porte dedicate: evita
9222per prevenire collisioni con i flussi di lavoro di sviluppo. - Controllo deterministico delle schede: le schede vengono indirizzate tramite
targetId, non tramite “ultima scheda”.
Selezione del browser
Quando viene avviato localmente, OpenClaw sceglie il primo disponibile:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Piattaforme:
- macOS: controlla
/Applicationse~/Applications. - Linux: cerca
google-chrome,brave,microsoft-edge,chromium, ecc. - Windows: controlla le posizioni di installazione comuni.
API di controllo (facoltativa)
Solo per integrazioni locali, il Gateway espone una piccola API HTTP su loopback:- Stato/avvio/arresto:
GET /,POST /start,POST /stop - Schede:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/screenshot:
GET /snapshot,POST /screenshot - Azioni:
POST /navigate,POST /act - Hook:
POST /hooks/file-chooser,POST /hooks/dialog - Download:
POST /download,POST /wait/download - Debug:
GET /console,POST /pdf - Debug:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Rete:
POST /response/body - Stato:
GET /cookies,POST /cookies/set,POST /cookies/clear - Stato:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Impostazioni:
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>.
Se è configurata l’autenticazione gateway con segreto condiviso, anche le route HTTP browser richiedono autenticazione:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>oppure HTTP Basic auth con quella password
- Questa API browser standalone su loopback non usa trusted-proxy o gli header di identità Tailscale Serve.
- Se
gateway.auth.modeènoneotrusted-proxy, queste route browser su loopback non ereditano quelle modalità basate sull’identità; mantienile solo su loopback.
Requisito Playwright
Alcune funzionalità (navigate/act/AI snapshot/role snapshot, screenshot di elementi, PDF) richiedono Playwright. Se Playwright non è installato, quegli endpoint restituiscono un chiaro errore 501. Cosa funziona ancora senza Playwright:- Snapshot ARIA
- Screenshot di pagina per il browser
openclawgestito quando è disponibile un WebSocket CDP per scheda - Screenshot di pagina per profili
existing-session/ Chrome MCP - Screenshot existing-session basati su ref (
--ref) dall’output snapshot
navigateact- Snapshot AI / role snapshot
- Screenshot di elementi con selettore CSS (
--element) - Esportazione PDF completa del browser
--full-page; la route restituisce fullPage is not supported for element screenshots.
Se vedi Playwright is not available in this gateway build, installa il pacchetto completo
Playwright (non playwright-core) e riavvia il gateway, oppure reinstalla
OpenClaw con supporto browser.
Installazione di Playwright in Docker
Se il tuo Gateway è in esecuzione in Docker, evitanpx playwright (conflitti con gli override npm).
Usa invece la CLI inclusa:
PLAYWRIGHT_BROWSERS_PATH (ad esempio,
/home/node/.cache/ms-playwright) e assicurati che /home/node sia persistente tramite
OPENCLAW_HOME_VOLUME o un bind mount. Vedi Docker.
Come funziona (interno)
Flusso di alto livello:- Un piccolo server di controllo accetta richieste HTTP.
- Si collega ai browser basati su Chromium (Chrome/Brave/Edge/Chromium) tramite CDP.
- Per azioni avanzate (clic/digitazione/snapshot/PDF), usa Playwright sopra CDP.
- Quando Playwright manca, sono disponibili solo le operazioni non basate su Playwright.
Riferimento rapido CLI
Tutti i comandi accettano--browser-profile <name> per destinare un profilo specifico.
Tutti i comandi accettano anche --json per output leggibili dalla macchina (payload stabili).
Elementi di base:
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
- Per i profili attach-only e CDP remoti,
openclaw browser stopè comunque il comando corretto di pulizia dopo i test. Chiude la sessione di controllo attiva e cancella le sovrascritture temporanee di emulazione invece di terminare il browser sottostante. 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"
uploadedialogsono chiamate di preparazione; eseguirle prima del clic/premi che attiva il selettore file/dialog.- I percorsi di output per download e trace sono vincolati alle radici temp di OpenClaw:
- trace:
/tmp/openclaw(fallback:${os.tmpdir()}/openclaw) - download:
/tmp/openclaw/downloads(fallback:${os.tmpdir()}/openclaw/downloads)
- trace:
- I percorsi di upload sono vincolati a una radice temp uploads di OpenClaw:
- uploads:
/tmp/openclaw/uploads(fallback:${os.tmpdir()}/openclaw/uploads)
- uploads:
uploadpuò anche impostare direttamente input file tramite--input-refo--element.snapshot:--format ai(predefinito quando Playwright è installato): restituisce uno snapshot AI con ref numerici (aria-ref="<n>").--format aria: restituisce l’albero di accessibilità (nessun ref; solo ispezione).--efficient(oppure--mode efficient): preset di role snapshot compatto (interactive + compact + depth + maxChars inferiore).- Predefinito di configurazione (solo tool/CLI): imposta
browser.snapshotDefaults.mode: "efficient"per usare snapshot efficienti quando il chiamante non passa una modalità (vedi configurazione del Gateway). - Le opzioni role snapshot (
--interactive,--compact,--depth,--selector) forzano uno snapshot basato sui ruoli con ref comeref=e12. --frame "<iframe selector>"limita i role snapshot a un iframe (si abbina a ref di ruolo comee12).--interactiveproduce un elenco piatto, facile da selezionare, di elementi interattivi (ideale per pilotare le azioni).--labelsaggiunge uno screenshot solo viewport con etichette ref sovrapposte (stampaMEDIA:<path>).
click/type/ecc. richiedono unrefdasnapshot(numerico12o ref di ruoloe12). I selettori CSS non sono intenzionalmente supportati per le azioni.
Snapshot e ref
OpenClaw supporta due stili di “snapshot”:-
Snapshot AI (ref numerici):
openclaw browser snapshot(predefinito;--format ai)- Output: uno snapshot testuale che include ref numerici.
- Azioni:
openclaw browser click 12,openclaw browser type 23 "hello". - Internamente, il ref viene risolto tramite
aria-refdi Playwright.
-
Role snapshot (ref di ruolo come
e12):openclaw browser snapshot --interactive(oppure--compact,--depth,--selector,--frame)- Output: un elenco/albero basato sui ruoli con
[ref=e12](e facoltativamente[nth=1]). - Azioni:
openclaw browser click e12,openclaw browser highlight e12. - Internamente, il ref viene risolto tramite
getByRole(...)(piùnth()per i duplicati). - Aggiungi
--labelsper includere uno screenshot della viewport con etichettee12sovrapposte.
- Output: un elenco/albero basato sui ruoli con
- I ref non sono stabili tra navigazioni; se qualcosa fallisce, riesegui
snapshote usa un ref nuovo. - Se il role snapshot è stato acquisito con
--frame, i ref di ruolo sono limitati a quell’iframe fino al role snapshot successivo.
Potenziamenti di attesa
Puoi attendere più di semplice tempo/testo:- Attendere un URL (glob supportati da Playwright):
openclaw browser wait --url "**/dash"
- Attendere uno stato di caricamento:
openclaw browser wait --load networkidle
- Attendere un predicato JS:
openclaw browser wait --fn "window.ready===true"
- Attendere che un selettore diventi visibile:
openclaw browser wait "#main"
Flussi di debug
Quando un’azione fallisce (ad es. “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Usa
click <ref>/type <ref>(preferisci i ref di ruolo in modalità interactive) - Se fallisce ancora:
openclaw browser highlight <ref>per vedere cosa Playwright sta prendendo di mira - Se la pagina si comporta in modo strano:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Per debug approfondito: registra una trace:
openclaw browser trace start- riproduci il problema
openclaw browser trace stop(stampaTRACE:<path>)
Output JSON
--json è pensato per scripting e tooling strutturato.
Esempi:
refs più un piccolo blocco stats (righe/caratteri/ref/interattivi) così gli strumenti possono ragionare su dimensione e densità del payload.
Stato e opzioni dell’ambiente
Sono utili per flussi del tipo “fai comportare il sito come X”:- Cookie:
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"}'(il legacyset headers --json '{"X-Debug":"1"}'resta supportato) - Autenticazione HTTP basic:
set credentials user pass(oppure--clear) - Geolocalizzazione:
set geo <lat> <lon> --origin "https://example.com"(oppure--clear) - Media:
set media dark|light|no-preference|none - Fuso orario / impostazioni locali:
set timezone ...,set locale ... - Dispositivo / viewport:
set device "iPhone 14"(preset dispositivi Playwright)set viewport 1280 720
Sicurezza e privacy
- Il profilo browser openclaw può contenere sessioni autenticate; trattalo come sensibile.
browser act kind=evaluate/openclaw browser evaluateewait --fneseguono JavaScript arbitrario nel contesto della pagina. Il prompt injection può influenzare questo comportamento. Disabilitalo conbrowser.evaluateEnabled=falsese non ti serve.- Per login e note anti-bot (X/Twitter, ecc.), vedi Browser login + pubblicazione X/Twitter.
- Mantieni Gateway/host del nodo privati (solo loopback o tailnet).
- Gli endpoint CDP remoti sono potenti; instradali tramite tunnel e proteggili.
Risoluzione dei problemi
Per problemi specifici di Linux (soprattutto Chromium snap), vedi Risoluzione dei problemi del browser. Per configurazioni divise WSL2 Gateway + Chrome Windows su host separato, vedi Risoluzione dei problemi WSL2 + Windows + Chrome remoto CDP.Strumenti dell’agente + come funziona il controllo
L’agente riceve uno strumento per l’automazione del browser:browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotrestituisce un albero UI stabile (AI o ARIA).browser actusa gli IDrefdello snapshot per fare clic/digitare/trascinare/selezionare.browser screenshotacquisisce i pixel (pagina intera o elemento).browseraccetta:profileper scegliere un profilo browser nominato (openclaw, chrome o CDP remoto).target(sandbox|host|node) per selezionare dove si trova il browser.- Nelle sessioni sandbox,
target: "host"richiedeagents.defaults.sandbox.browser.allowHostControl=true. - Se
targetviene omesso: le sessioni sandbox usano per impostazione predefinitasandbox, le sessioni non sandbox usano per impostazione predefinitahost. - Se è collegato un nodo con capacità browser, lo strumento può instradarsi automaticamente a esso a meno che tu non fissi
target="host"otarget="node".
Correlati
- Panoramica degli strumenti — tutti gli strumenti agente disponibili
- Sandboxing — controllo del browser in ambienti sandbox
- Sicurezza — rischi del controllo browser e hardening