openclaw browser
CLI e i modelli di scripting (snapshot, riferimenti, attese, flussi di debug).
API di controllo (facoltativa)
Solo per le integrazioni locali, il Gateway espone una piccola API HTTP sull’interfaccia di loopback. Questo server autonomo è facoltativo: impostare la variabile d’ambienteOPENCLAW_EAGER_BROWSER_CONTROL_SERVER=1 nell’ambiente del servizio Gateway
e riavviare il Gateway affinché gli endpoint HTTP diventino disponibili. Senza
questa variabile, il runtime di controllo del browser continua a funzionare tramite la CLI e
gli strumenti dell’agente, ma nulla resta in ascolto sulla porta di controllo di loopback.
- Stato/avvio/arresto:
GET /,GET /doctor,POST /start,POST /stop,POST /reset-profile - Profili:
GET /profiles,POST /profiles/create,DELETE /profiles/:name - Schede:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId,POST /tabs/action - 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 - Autorizzazioni:
POST /permissions/grant - Debug:
GET /console,POST /pdf - Debug:
GET /errors,GET /requests,GET /dialogs,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
POST /tabs/action è il formato aggregato usato internamente dalla CLI per i
sottocomandi browser tab ({"action":"new"|"label"|"select"|"close"|"list", ...});
per lo scripting diretto, preferire le route specifiche per le singole schede indicate sopra.
Tutti gli endpoint accettano ?profile=<name>. POST /start?headless=true richiede un
avvio headless una tantum per i profili locali gestiti senza modificare la configurazione
persistente del browser; i profili di sola connessione, CDP remoto e sessione esistente rifiutano
questa sostituzione perché OpenClaw non avvia tali processi del browser.
Per gli endpoint delle schede, targetId è il nome del campo di compatibilità. È preferibile passare
suggestedTargetId da GET /tabs o POST /tabs/open; sono accettati anche le etichette e gli handle tabId
come t1. Gli ID target CDP non elaborati e i relativi prefissi univoci
continuano a funzionare, ma sono handle diagnostici volatili.
Se è configurata l’autenticazione del Gateway tramite segreto condiviso, anche le route HTTP del browser richiedono l’autenticazione:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>oppure autenticazione HTTP Basic con tale password
- Questa API autonoma del browser su loopback non utilizza le intestazioni di identità del proxy attendibile o di Tailscale Serve.
- Se
gateway.auth.modeènoneotrusted-proxy, queste route del browser su loopback non ereditano tali modalità basate sull’identità; mantenerle accessibili solo tramite loopback.
Contratto degli errori di /act
POST /act utilizza una risposta di errore strutturata per gli errori di convalida a livello di route e
le violazioni dei criteri:
code:
ACT_KIND_REQUIRED(HTTP 400):kindè mancante o non riconosciuto.ACT_INVALID_REQUEST(HTTP 400): la normalizzazione o la convalida del payload dell’azione non è riuscita.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): il valoretargetIddi primo livello o aggregato è in conflitto con il target della richiesta.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): l’azione non è supportata per i profili con sessione esistente.
{ "error": "<message>" } senza un
campo code.
Requisito di Playwright
Alcune funzionalità (navigazione/azione/snapshot AI/snapshot dei ruoli, screenshot degli elementi, PDF) richiedono Playwright. Se Playwright non è installato, tali endpoint restituiscono un errore 501 chiaro. Funzionalità che continuano a operare senza Playwright:- Snapshot ARIA
- Snapshot di accessibilità in stile ruolo (
--interactive,--compact,--depth,--efficient) quando è disponibile un WebSocket CDP per scheda. Questa è un’opzione di ripiego per l’ispezione e l’individuazione dei riferimenti; Playwright rimane il motore principale per le azioni. - Screenshot della pagina per il browser
openclawgestito quando è disponibile un WebSocket CDP per scheda - Screenshot della pagina per i profili
existing-session/ Chrome MCP - Screenshot basati sui riferimenti
existing-session(--ref) dall’output dello snapshot
navigateact- Snapshot AI che dipendono dal formato di snapshot AI nativo di Playwright
- Screenshot di elementi tramite selettore CSS (
--element) - Esportazione PDF completa del browser
--full-page; la route restituisce fullPage is not supported for element screenshots.
Se viene visualizzato Playwright is not available in this gateway build, nel
Gateway distribuito manca la dipendenza principale del runtime del browser. Reinstallare o aggiornare
OpenClaw, quindi riavviare il Gateway. Per Docker, installare anche i file binari del browser
Chromium come illustrato di seguito.
Installazione di Playwright in Docker
Se il Gateway viene eseguito in Docker, evitarenpx playwright (conflitti con le sostituzioni npm).
Per le immagini personalizzate, integrare Chromium nell’immagine:
PLAYWRIGHT_BROWSERS_PATH (ad esempio,
/home/node/.cache/ms-playwright) e assicurarsi che /home/node venga mantenuto tramite
OPENCLAW_HOME_VOLUME o un montaggio associato. OpenClaw rileva automaticamente Chromium
persistente su Linux. Consultare Docker.
Funzionamento (interno)
Un piccolo server di controllo su loopback accetta le richieste HTTP e si connette ai browser basati su Chromium tramite CDP. Le azioni avanzate (clic/digitazione/snapshot/PDF) passano attraverso Playwright al di sopra di CDP; quando Playwright non è disponibile, sono accessibili solo le operazioni che non lo richiedono. L’agente vede un’unica interfaccia stabile, mentre i browser e i profili locali/remoti possono essere sostituiti liberamente al di sotto di essa.Riferimento rapido della CLI
Tutti i comandi accettano--browser-profile <name> per selezionare un profilo specifico e --json per produrre un output leggibile dalla macchina.
Operazioni di base: stato, schede, apertura/selezione/chiusura
Operazioni di base: stato, schede, apertura/selezione/chiusura
Profili: elenco, creazione, eliminazione
Profili: elenco, creazione, eliminazione
Ispezione: screenshot, snapshot, console, errori, richieste
Ispezione: screenshot, snapshot, console, errori, richieste
- Lo strumento
browserrivolto all’agente esponeaction=download(refepathobbligatori) eaction=waitfordownload(pathfacoltativo). Entrambi restituiscono l’URL di download salvato, il nome file suggerito e il percorso locale protetto. L’intercettazione esplicita dei download è disponibile per i profili Playwright gestiti; i profili con sessione esistente restituiscono un errore di operazione non supportata. - Preferire i caricamenti atomici tramite selettore: passare il trigger
--refinsieme al caricamento, affinché OpenClaw lo predisponga ed esegua il clic in un’unica richiesta.uploadcon soli percorsi resta supportato quando si intende usare un trigger successivo. Usare--input-refo--elementper impostare direttamente un input file.dialogè una chiamata di predisposizione; eseguirla prima del clic o della pressione che attiva la finestra di dialogo. Se un’azione apre una finestra modale, la risposta dell’azione includeblockedByDialogebrowserState.dialogs.pending; passare taledialogIdper rispondere direttamente. Le finestre di dialogo gestite al di fuori di OpenClaw vengono visualizzate sottobrowserState.dialogs.recent. click/type/ecc. richiedono unrefproveniente dasnapshot(12numerico, riferimento di ruoloe12o riferimento ARIA utilizzabileax12). I selettori CSS non sono intenzionalmente supportati per le azioni. Usareclick-coordsquando la posizione nel viewport visibile è l’unico obiettivo affidabile.- I percorsi di download e traccia sono limitati alle directory temporanee radice di OpenClaw:
/tmp/openclaw{,/downloads}(ripiego:${os.tmpdir()}/openclaw/...). uploadaccetta file dalla directory temporanea radice dei caricamenti di OpenClaw e dai contenuti multimediali in ingresso gestiti da OpenClaw. I contenuti multimediali in ingresso gestiti possono essere referenziati comemedia://inbound/<id>, comemedia/inbound/<id>relativo alla sandbox o tramite un percorso risolto all’interno della directory dei contenuti multimediali in ingresso gestiti. Riferimenti multimediali annidati, attraversamento di directory, collegamenti simbolici, collegamenti fisici e percorsi locali arbitrari vengono comunque rifiutati.uploadpuò anche impostare direttamente gli input file tramite--input-refo--element.
suggestedTargetId da tabs.
Panoramica delle opzioni degli snapshot:
--format ai(predefinito con Playwright): snapshot IA con riferimenti numerici (aria-ref="<n>").--format aria: albero di accessibilità con riferimentiaxN. Quando Playwright è disponibile, OpenClaw associa i riferimenti con gli ID DOM del backend alla pagina attiva, affinché possano essere usati dalle azioni successive; in caso contrario, considerare l’output utilizzabile solo per l’ispezione.--efficient(oppure--mode efficient): configurazione preimpostata compatta dello snapshot dei ruoli. Impostarebrowser.snapshotDefaults.mode: "efficient"per renderla predefinita (consultare Configurazione del Gateway).--interactive,--compact,--depth,--selectorimpongono uno snapshot dei ruoli con riferimentiref=e12.--frame "<iframe>"limita gli snapshot dei ruoli a un iframe.- Con Playwright,
--labelsaggiunge uno screenshot con le etichette dei riferimenti sovrapposte (stampaMEDIA:<path>) e un arrayannotationscon il riquadro di delimitazione di ciascun riferimento. Conscreenshot, le etichette basate su Playwright funzionano con--full-page,--refe--element; consnapshot, lo screenshot associato resta limitato al viewport. I profili con sessione esistente/chrome-mcp mostrano etichette sovrapposte negli screenshot della pagina, ma non restituisconoannotationsné usano l’helper di proiezione a pagina intera/per riferimento/per elemento di Playwright. Senza Playwright o chrome-mcp, gli screenshot con etichette non sono disponibili. --urlsaggiunge le destinazioni dei link rilevati agli snapshot IA.
Snapshot e riferimenti
OpenClaw supporta due stili di “snapshot”:-
Snapshot IA (riferimenti numerici):
openclaw browser snapshot(predefinito;--format ai)- Output: uno snapshot testuale che include riferimenti numerici.
- Azioni:
openclaw browser click 12,openclaw browser type 23 "hello". - Internamente, il riferimento viene risolto tramite
aria-refdi Playwright.
-
Snapshot dei ruoli (riferimenti di ruolo come
e12):openclaw browser snapshot --interactive(oppure--compact,--depth,--selector,--frame)- Output: un elenco/albero basato sui ruoli con
[ref=e12](e[nth=1]facoltativo). - Azioni:
openclaw browser click e12,openclaw browser highlight e12. - Internamente, il riferimento viene risolto tramite
getByRole(...)(piùnth()per i duplicati). - Aggiungere
--labelsper includere uno screenshot con etichettee12sovrapposte. Nei profili basati su Playwright, ciò restituisce anche i metadati del riquadro di delimitazione per ciascun riferimento (annotations[]). - Aggiungere
--urlsquando il testo del link è ambiguo e l’agente necessita di obiettivi di navigazione concreti.
- Output: un elenco/albero basato sui ruoli con
-
Snapshot ARIA (riferimenti ARIA come
ax12):openclaw browser snapshot --format aria- Output: l’albero di accessibilità sotto forma di nodi strutturati.
- Azioni:
openclaw browser click ax12funziona quando il percorso dello snapshot può associare il riferimento tramite Playwright e gli ID DOM del backend di Chrome.
-
Se Playwright non è disponibile, gli snapshot ARIA possono comunque essere utili per
l’ispezione, ma i riferimenti potrebbero non essere utilizzabili per le azioni. Creare un nuovo snapshot con
--format aio--interactivequando sono necessari riferimenti utilizzabili per le azioni. -
Verifica Docker per il percorso di ripiego CDP grezzo:
pnpm test:docker:browser-cdp-snapshotavvia Chromium con CDP, eseguebrowser doctor --deepe verifica che gli snapshot dei ruoli includano gli URL dei link, gli elementi cliccabili promossi dal cursore e i metadati degli iframe.
- I riferimenti non sono stabili tra le navigazioni; se qualcosa non riesce, eseguire nuovamente
snapshote usare un riferimento nuovo. /actrestituisce iltargetIdgrezzo corrente dopo una sostituzione attivata da un’azione quando può verificare la scheda sostitutiva. Continuare a usare ID ed etichette stabili delle schede per i comandi successivi.- Se lo snapshot dei ruoli è stato acquisito con
--frame, i riferimenti di ruolo sono limitati a tale iframe fino al successivo snapshot dei ruoli. - I riferimenti
axNsconosciuti o obsoleti falliscono immediatamente anziché ricorrere al selettorearia-refdi Playwright. In tal caso, eseguire un nuovo snapshot nella stessa scheda.
Attese avanzate
È possibile attendere condizioni diverse dal semplice tempo/testo:- Attesa dell’URL (glob supportati da Playwright):
openclaw browser wait --url "**/dash"
- Attesa dello stato di caricamento:
openclaw browser wait --load networkidle- Supportato nei profili
openclawgestiti e nei profili CDP grezzi/remoti. I profili che usano il driverexisting-session(incluso il profilouserpredefinito) rifiutanonetworkidle; in tali profili usare le attese--url,--text, un selettore oppure--fn.
- Attesa di un predicato JS:
openclaw browser wait --fn "window.ready===true"
- Attesa che un selettore diventi visibile:
openclaw browser wait "#main"
Flussi di lavoro per il debug
Quando un’azione non riesce (ad esempio “non visibile”, “violazione della modalità rigorosa”, “coperto”):openclaw browser snapshot --interactive- Usare
click <ref>/type <ref>(preferire i riferimenti di ruolo in modalità interattiva) - Se continua a non riuscire:
openclaw browser highlight <ref>per vedere a cosa punta Playwright - Se la pagina si comporta in modo anomalo:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Per un debug approfondito, registrare una traccia:
openclaw browser trace start- riprodurre il problema
openclaw browser trace stop(stampaTRACE:<path>)
Output JSON
--json è destinato agli script e agli strumenti strutturati.
Esempi:
refs e un piccolo blocco stats (righe/caratteri/riferimenti/interattivi), affinché gli strumenti possano valutare le dimensioni e la densità del payload.
Opzioni di stato e ambiente
Sono utili per i flussi di lavoro che mirano a “far comportare il sito come X”:- Cookie:
cookies,cookies set,cookies clear - Archiviazione:
storage local|session get|set|clear - Modalità offline:
set offline on|off - Intestazioni:
set headers --headers-json '{"X-Debug":"1"}'(oppure la forma posizionaleset headers '{"X-Debug":"1"}') - Autenticazione HTTP di base:
set credentials user pass(oppure--clear) - Geolocalizzazione:
set geo <lat> <lon> --origin "https://example.com"(oppure--clear) - Contenuti multimediali:
set media dark|light|no-preference|none - Fuso orario / impostazioni locali:
set timezone ...,set locale ... - Dispositivo / viewport:
set device "iPhone 14"(configurazioni preimpostate dei dispositivi Playwright)set viewport 1280 720
Sicurezza e privacy
- Il profilo browser di openclaw può contenere sessioni autenticate; deve essere considerato sensibile.
browser act kind=evaluate/openclaw browser evaluateewait --fneseguono JavaScript arbitrario nel contesto della pagina. La prompt injection può influenzarne il comportamento. Disabilitarlo conbrowser.evaluateEnabled=falsese non è necessario.openclaw browser evaluate --fnaccetta il sorgente di una funzione, un’espressione o il corpo di un’istruzione. I corpi delle istruzioni vengono racchiusi in funzioni asincrone, quindi usarereturnper il valore da restituire. Usare--timeout-ms <ms>quando la funzione lato pagina potrebbe richiedere più tempo del timeout di valutazione predefinito.- Per gli accessi e le note anti-bot (X/Twitter, ecc.), consultare Accesso tramite browser + pubblicazione su X/Twitter.
- Mantenere privato l’host del Gateway/Node (solo loopback o tailnet).
- Gli endpoint CDP remoti sono potenti; proteggerli e accedervi tramite tunnel.
Argomenti correlati
- Browser - panoramica, configurazione, profili, sicurezza
- Accesso tramite browser - accesso ai siti
- Risoluzione dei problemi del browser su Linux
- Risoluzione dei problemi del browser su WSL2