Browser (gestito da openclaw)
OpenClaw può eseguire un profilo Chrome/Brave/Edge/Chromium dedicato che l’agente controlla. È 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 una lane sicura.
- Il profilo
userintegrato si collega alla tua vera sessione Chrome con accesso effettuato tramite Chrome MCP.
Cosa ottieni
- Un profilo browser separato chiamato openclaw (accento arancione per impostazione predefinita).
- Controllo deterministico delle schede (elencare/aprire/mettere a fuoco/chiudere).
- Azioni dell’agente (clic/digitazione/trascinamento/selezione), 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 strumento predefinitobrowser ora è un plugin bundle 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 agente e il servizio di controllo browser predefinito
scompaiono tutti insieme. La tua configurazione browser.* rimane intatta perché possa essere riutilizzata da
un plugin sostitutivo.
Il plugin browser bundle ora possiede anche l’implementazione runtime del browser.
Il core mantiene solo helper condivisi del Plugin SDK più re-export di compatibilità per
i vecchi percorsi di import interni. In pratica, rimuovere o sostituire il pacchetto del plugin browser
rimuove l’insieme di funzionalità del browser invece di lasciare dietro un secondo runtime posseduto dal
core.
Le modifiche alla configurazione del browser richiedono comunque un riavvio del Gateway in modo che il plugin bundle
possa registrare di nuovo 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 manca lo strumento browser, la causa più comune è un elenco plugins.allow
restrittivo che non include browser.
Esempio di configurazione non funzionante:
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 bundle. Regola solo la policy degli strumenti dopo che il plugin è già stato caricato.- Se non hai bisogno di una allowlist plugin restrittiva, rimuovere
plugins.allowripristina anche il comportamento browser bundle predefinito.
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 integrato di collegamento Chrome MCP per la tua vera sessione Chrome con accesso effettuato.
- Predefinito: usa il browser isolato
openclaw. - Preferisci
profile="user"quando contano le sessioni già connesse e l’utente è al computer per fare clic/approvare eventuali prompt di collegamento. profileè la sostituzione esplicita quando vuoi una modalità browser specifica.
browser.defaultProfile: "openclaw" se vuoi la modalità gestita per impostazione predefinita.
Configurazione
Le impostazioni del browser si trovano in~/.openclaw/openclaw.json.
- Il servizio di controllo del browser si collega a loopback su una porta derivata da
gateway.port(predefinita:18791, che è gateway + 2). - Se sostituisci la porta del Gateway (
gateway.portoOPENCLAW_GATEWAY_PORT), le porte browser derivate cambiano per rimanere nella stessa “famiglia”. cdpUrlusa per impostazione predefinita la porta CDP locale gestita quando non è impostato.remoteCdpTimeoutMssi applica ai controlli di raggiungibilità CDP remoti (non loopback).remoteCdpHandshakeTimeoutMssi applica ai controlli di raggiungibilità handshake WebSocket CDP remoti.- La navigazione/apertura di schede del browser è protetta da SSRF prima della navigazione e ricontrollata con la massima accuratezza possibile sull’URL
http(s)finale dopo la navigazione. - In modalità SSRF rigorosa, anche il rilevamento/i probe degli endpoint CDP remoti (
cdpUrl, incluse le ricerche/json/version) vengono controllati. browser.ssrfPolicy.dangerouslyAllowPrivateNetworkusa per impostazione predefinitatrue(modello trusted-network). Impostalo sufalseper una navigazione rigorosa solo pubblica.browser.ssrfPolicy.allowPrivateNetworkrimane 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 in modo che tu possa vedere quale profilo è attivo.- Il profilo predefinito è
openclaw(browser standalone gestito da OpenClaw). UsadefaultProfile: "user"per scegliere il browser dell’utente con accesso effettuato. - Ordine di rilevamento automatico: browser di sistema predefinito se basato su Chromium; altrimenti Chrome → Brave → Edge → Chromium → Chrome Canary.
- I profili locali
openclawassegnano automaticamentecdpPort/cdpUrl— impostali solo per CDP remoto. driver: "existing-session"usa Chrome DevTools MCP invece di CDP raw. 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 di sistema predefinito è basato su Chromium (Chrome/Brave/Edge/ecc.), OpenClaw lo usa automaticamente. Impostabrowser.executablePath per sostituire
il rilevamento automatico:
Esempio CLI:
Controllo locale vs remoto
- Controllo locale (predefinito): il Gateway avvia il servizio di controllo loopback e può lanciare un browser locale.
- Controllo remoto (host nodo): esegui un host nodo sulla macchina che ha il browser; il Gateway instrada tramite proxy le azioni del browser verso di esso.
- CDP remoto: imposta
browser.profiles.<name>.cdpUrl(obrowser.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 sostituzioni di emulazione Playwright/CDP (viewport, schema di colori, lingua, fuso orario, modalità offline e stato simile), anche se nessun processo browser è stato avviato da OpenClaw
- Token di query (ad esempio
https://provider.example?token=<token>) - Autenticazione HTTP Basic (ad esempio
https://user:pass@provider.example)
/json/* e quando si collega
al WebSocket CDP. Preferisci variabili di ambiente o gestori di segreti per i
token invece di eseguirne il commit nei file di configurazione.
Proxy browser del nodo (predefinito zero-config)
Se esegui un host nodo sulla macchina che ha il tuo 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 nodo espone il suo 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è opzionale. Lascialo vuoto per il comportamento legacy/predefinito: tutti i profili configurati restano raggiungibili tramite il proxy, incluse le route di creazione/eliminazione dei profili.- Se imposti
nodeHost.browserProxy.allowProfiles, OpenClaw lo tratta come un confine di privilegio minimo: solo i profili nella allowlist possono essere selezionati, e le route di creazione/eliminazione dei profili persistenti 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 su 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 che corrisponde 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 rilevi/json/version.
Provider CDP WebSocket diretto
Alcuni servizi browser ospitati espongono un endpoint WebSocket diretto invece del rilevamento CDP standard basato su HTTP (/json/version). OpenClaw supporta entrambe le forme:
- Endpoint HTTP(S) — OpenClaw chiama
/json/versionper rilevare l’URL del debugger WebSocket, quindi si connette. - Endpoint WebSocket (
ws:///wss://) — OpenClaw si connette 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 API key Browserbase. - Browserbase crea automaticamente una sessione browser alla connessione WebSocket, quindi non è necessario alcun passaggio manuale di creazione della sessione.
- Il piano gratuito consente una sessione concorrente e un’ora 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 del browser è solo loopback; l’accesso passa tramite l’autenticazione del Gateway o l’abbinamento del nodo.
- L’API HTTP browser loopback standalone usa solo autenticazione con segreto condiviso:
auth bearer del token gateway,
x-openclaw-password, oppure autenticazione HTTP Basic con la password gateway configurata. - Gli header di identità Tailscale Serve e
gateway.auth.mode: "trusted-proxy"non autenticano questa API browser loopback standalone. - Se il controllo del 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 qualsiasi host nodo su una rete privata (Tailscale); evita l’esposizione pubblica.
- Tratta gli URL/token CDP remoti come segreti; preferisci variabili di ambiente o un gestore di segreti.
- Preferisci endpoint cifrati (HTTPS o WSS) e token a breve durata quando possibile.
- Evita di incorporare direttamente token a lunga durata nei file di configurazione.
Profili (browser multipli)
OpenClaw supporta più profili nominati (configurazioni di instradamento). I profili possono essere:- gestiti da openclaw: un’istanza dedicata di browser basato su Chromium con la propria directory dati utente + porta CDP
- remoto: un URL CDP esplicito (browser basato su Chromium in esecuzione altrove)
- sessione esistente: il tuo profilo Chrome esistente tramite connessione automatica 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 da 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 di browser basato su Chromium già in esecuzione tramite il server MCP ufficiale di Chrome DevTools. 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
userintegrato usa la connessione automatica Chrome MCP, che punta al profilo Google Chrome locale predefinito.
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.
- Mantieni il browser in esecuzione e approva il prompt 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 schede browser già apertesnapshotrestituisce ref dalla scheda live selezionata
- il browser basato su Chromium di destinazione è alla versione
144+ - il debug remoto è abilitato nella pagina inspect di quel browser
- il browser ha mostrato il prompt di consenso al collegamento e tu lo hai accettato
openclaw doctormigra la vecchia configurazione browser basata su estensione e controlla che Chrome sia installato localmente per i profili predefiniti con connessione automatica, ma non può abilitare per te il debug remoto lato browser
- Usa
profile="user"quando ti serve lo stato del browser dell’utente con accesso effettuato. - Se usi un profilo existing-session personalizzato, passa quel nome profilo esplicito.
- Scegli questa modalità solo quando l’utente è al computer per approvare il prompt di collegamento.
- il Gateway o l’host nodo possono avviare
npx chrome-devtools-mcp@latest --autoConnect
- Questo percorso ha un rischio maggiore rispetto al profilo isolato
openclawperché può agire all’interno della tua sessione browser con accesso effettuato. - OpenClaw non avvia il browser per questo driver; si collega solo a una sessione esistente.
- OpenClaw usa qui il flusso ufficiale
--autoConnectdi Chrome DevTools MCP. SeuserDataDirè impostato, OpenClaw lo passa attraverso per puntare a quella directory dati utente Chromium esplicita. - Gli screenshot existing-session supportano catture di pagina e catture di elemento
--refdagli output snapshot, ma non i selettori CSS--element. - Gli screenshot di pagina existing-session funzionano senza Playwright tramite Chrome MCP.
Anche gli screenshot di elemento 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 snapshot invece dei selettori CSSclickè solo con tasto sinistro (nessuna sostituzione del pulsante o modificatore)typenon supportaslowly=true; usafillopresspressnon supportadelayMshover,scrollIntoView,drag,select,filledevaluatenon supportano sostituzioni timeout per chiamataselectattualmente supporta solo un singolo valore
- Existing-session
wait --urlsupporta pattern esatti, di 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 dialog existing-session non supportano sostituzioni timeout.
- Alcune funzionalità richiedono ancora il percorso browser gestito, tra cui
azioni batch, esportazione PDF, intercettazione download e
responsebody. - Existing-session è locale all’host. Se Chrome si trova su un’altra macchina o in un namespace di rete diverso, usa invece CDP remoto o un host 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: indirizza le schede tramite
targetId, non “ultima scheda”.
Selezione del browser
Quando esegue l’avvio locale, 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 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 autenticazione HTTP Basic con quella password
- Questa API browser loopback standalone non usa trusted-proxy o gli header di identità Tailscale Serve.
- Se
gateway.auth.modeènoneotrusted-proxy, queste route browser loopback non ereditano quelle modalità con identità; mantienile solo loopback.
Contratto di errore /act
POST /act usa una risposta di errore strutturata per la validazione a livello di route e
per gli errori di policy:
code attuali:
ACT_KIND_REQUIRED(HTTP 400):kindmanca o non è riconosciuto.ACT_INVALID_REQUEST(HTTP 400): il payload dell’azione non ha superato normalizzazione o validazione.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectorè stato usato con un tipo di azione non supportato.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(owait --fn) è disabilitato dalla configurazione.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIddi primo livello o batch è in conflitto con la destinazione della richiesta.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): l’azione non è supportata per i profili existing-session.
{ "error": "<message>" } senza un
campo code.
Requisito Playwright
Alcune funzionalità (navigate/act/snapshot AI/snapshot ruolo, screenshot di elementi, PDF) richiedono Playwright. Se Playwright non è installato, quegli endpoint restituiscono un chiaro errore 501. Cosa continua a funzionare senza Playwright:- snapshot ARIA
- screenshot di pagina per il browser
openclawgestito quando è disponibile un WebSocket CDP per scheda - screenshot di pagina per i profili
existing-session/ Chrome MCP - screenshot existing-session basati su ref (
--ref) dall’output snapshot
navigateact- snapshot AI / snapshot ruolo
- 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 bundle:
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 ad alto livello:- Un piccolo server di controllo accetta richieste HTTP.
- Si connette ai browser basati su Chromium (Chrome/Brave/Edge/Chromium) tramite CDP.
- Per azioni avanzate (clic/digitazione/snapshot/PDF), usa Playwright sopra CDP.
- Quando Playwright non è presente, sono disponibili solo le operazioni che non usano Playwright.
Riferimento rapido CLI
Tutti i comandi accettano--browser-profile <name> per indirizzare un profilo specifico.
Tutti i comandi accettano anche --json per output leggibile dalla macchina (payload stabili).
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 di pulizia corretto dopo i test. Chiude la sessione di controllo attiva e cancella le sostituzioni 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 armamento; eseguirle prima del clic/della pressione che attiva il selettore/la finestra di dialogo.- I percorsi di output per download e trace sono vincolati alle root temporanee 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 root temporanea di upload OpenClaw:
- upload:
/tmp/openclaw/uploads(fallback:${os.tmpdir()}/openclaw/uploads)
- upload:
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(o--mode efficient): preset snapshot di ruolo compatto (interactive + compact + depth + maxChars più basso).- Predefinito di configurazione (solo strumento/CLI): imposta
browser.snapshotDefaults.mode: "efficient"per usare snapshot efficienti quando il chiamante non passa una modalità (vedi Configurazione del Gateway). - Le opzioni snapshot di ruolo (
--interactive,--compact,--depth,--selector) forzano uno snapshot basato sui ruoli con ref comeref=e12. --frame "<iframe selector>"limita gli snapshot di ruolo a un iframe (si abbina a ref di ruolo comee12).--interactiveproduce un elenco piatto, facile da selezionare, di elementi interattivi (ideale per guidare 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 intenzionalmente non sono 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.
-
Snapshot di ruolo (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, esegui di nuovo
snapshote usa un ref aggiornato. - Se lo snapshot di ruolo è stato acquisito con
--frame, i ref di ruolo sono limitati a quell’iframe fino al successivo snapshot di ruolo.
Potenziamenti di wait
Puoi aspettare più del 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 esempio “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 indirizzando - Se la pagina si comporta in modo strano:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Per un 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 strumenti strutturati.
Esempi:
refs più un piccolo blocco stats (linee/caratteri/ref/interattivi) così gli strumenti possono ragionare su dimensione e densità del payload.
Controlli di stato e ambiente
Sono utili per flussi “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) - Auth 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 / lingua:
set timezone ...,set locale ... - Dispositivo / viewport:
set device "iPhone 14"(preset dispositivo Playwright)set viewport 1280 720
Sicurezza e privacy
- Il profilo browser openclaw può contenere sessioni con accesso effettuato; trattalo come sensibile.
browser act kind=evaluate/openclaw browser evaluateewait --fneseguono JavaScript arbitrario nel contesto della pagina. Il prompt injection può indirizzare questo comportamento. Disabilitalo conbrowser.evaluateEnabled=falsese non ti serve.- Per accessi e note anti-bot (X/Twitter, ecc.), vedi Accesso browser + pubblicazione su X/Twitter.
- Mantieni privato il Gateway/l’host nodo (solo loopback o tailnet).
- Gli endpoint CDP remoti sono potenti; incanalali tramite tunnel e proteggili.
Risoluzione dei problemi
Per problemi specifici di Linux (in particolare snap Chromium), vedi Risoluzione dei problemi del browser. Per configurazioni con Gateway WSL2 + Chrome Windows su host separati, vedi Risoluzione dei problemi WSL2 + Windows + CDP Chrome remoto.Strumenti agente + funzionamento del 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
targetè omesso: le sessioni sandbox usanosandboxcome predefinito, le sessioni non sandbox usanohost. - Se è connesso un nodo con capacità browser, lo strumento può instradarsi automaticamente verso di 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 e hardening del controllo del browser