Navegador (gerenciado pelo openclaw)
O OpenClaw pode executar um perfil dedicado do Chrome/Brave/Edge/Chromium que o agente controla. Ele é isolado do seu navegador pessoal e é gerenciado por meio de um pequeno serviço local de controle dentro do Gateway (somente loopback). Visão para iniciantes:- Pense nele como um navegador separado, só para o agente.
- O perfil
openclawnão toca no seu perfil pessoal do navegador. - O agente pode abrir abas, ler páginas, clicar e digitar em uma faixa segura.
- O perfil integrado
userse conecta à sua sessão real autenticada do Chrome via Chrome MCP.
O que você recebe
- Um perfil de navegador separado chamado openclaw (com destaque laranja por padrão).
- Controle determinístico de abas (listar/abrir/focar/fechar).
- Ações do agente (clicar/digitar/arrastar/selecionar), snapshots, capturas de tela, PDFs.
- Suporte opcional a múltiplos perfis (
openclaw,work,remote, …).
Início rápido
openclaw browser estiver totalmente ausente, ou se o agente disser que a ferramenta de navegador
não está disponível, vá para Comando ou ferramenta de navegador ausente.
Controle por plugin
A ferramentabrowser padrão agora é um plugin empacotado que é enviado habilitado por
padrão. Isso significa que você pode desativá-lo ou substituí-lo sem remover o restante do
sistema de plugins do OpenClaw:
browser. A experiência padrão do navegador precisa de ambos:
plugins.entries.browser.enablednão desativadobrowser.enabled=true
openclaw browser),
o método do gateway (browser.request), a ferramenta do agente e o serviço padrão de controle do navegador desaparecem todos juntos. Sua configuração browser.* permanece intacta para que um
plugin de substituição a reutilize.
O plugin de navegador empacotado também agora é proprietário da implementação de runtime do navegador.
O core mantém apenas helpers compartilhados do Plugin SDK mais reexportações de compatibilidade para
caminhos de importação internos mais antigos. Na prática, remover ou substituir o pacote do plugin de navegador remove o conjunto de recursos do navegador em vez de deixar um segundo runtime de propriedade do core para trás.
Alterações de configuração do navegador ainda exigem reinicialização do Gateway para que o plugin empacotado
possa registrar novamente seu serviço de navegador com as novas configurações.
Comando ou ferramenta de navegador ausente
Seopenclaw browser de repente virar um comando desconhecido após uma atualização, ou
se o agente informar que a ferramenta de navegador está ausente, a causa mais comum é uma
lista restritiva plugins.allow que não inclui browser.
Exemplo de configuração quebrada:
browser à allowlist de plugins:
browser.enabled=truepor si só não é suficiente quandoplugins.allowestá definido.plugins.entries.browser.enabled=truepor si só também não é suficiente quandoplugins.allowestá definido.tools.alsoAllow: ["browser"]não carrega o plugin empacotado de navegador. Isso apenas ajusta a política de ferramentas depois que o plugin já foi carregado.- Se você não precisa de uma allowlist restritiva de plugins, remover
plugins.allowtambém restaura o comportamento padrão do navegador empacotado.
openclaw browseré um comando desconhecido.browser.requestestá ausente.- O agente informa que a ferramenta de navegador está indisponível ou ausente.
Perfis: openclaw vs user
openclaw: navegador gerenciado e isolado (não requer extensão).user: perfil integrado de conexão do Chrome MCP para sua sessão real autenticada do Chrome.
- Padrão: use o navegador isolado
openclaw. - Prefira
profile="user"quando sessões autenticadas existentes importarem e o usuário estiver no computador para clicar/aprovar qualquer prompt de conexão. profileé a substituição explícita quando você deseja um modo específico de navegador.
browser.defaultProfile: "openclaw" se quiser o modo gerenciado por padrão.
Configuração
As configurações do navegador ficam em~/.openclaw/openclaw.json.
- O serviço de controle do navegador se vincula ao loopback em uma porta derivada de
gateway.port(padrão:18791, que é gateway + 2). - Se você substituir a porta do Gateway (
gateway.portouOPENCLAW_GATEWAY_PORT), as portas derivadas do navegador mudam para permanecer na mesma “família”. cdpUrlusa por padrão a porta CDP local gerenciada quando não está definido.remoteCdpTimeoutMsse aplica a verificações de alcançabilidade de CDP remotas (não loopback).remoteCdpHandshakeTimeoutMsse aplica a verificações de alcançabilidade do handshake WebSocket de CDP remoto.- Navegação/abertura de aba no navegador é protegida por SSRF antes da navegação e verificada novamente em regime best-effort na URL final
http(s)após a navegação. - No modo SSRF estrito, descoberta/sondas de endpoint CDP remoto (
cdpUrl, incluindo buscas em/json/version) também são verificadas. browser.ssrfPolicy.dangerouslyAllowPrivateNetworkvem desativado por padrão. Defina comotruesomente quando você confiar intencionalmente no acesso do navegador à rede privada.browser.ssrfPolicy.allowPrivateNetworkcontinua compatível como alias legado para compatibilidade.attachOnly: truesignifica “nunca iniciar um navegador local; apenas conectar se ele já estiver em execução.”color+colorpor perfil tingem a UI do navegador para que você possa ver qual perfil está ativo.- O perfil padrão é
openclaw(navegador independente gerenciado pelo OpenClaw). UsedefaultProfile: "user"para optar pelo navegador autenticado do usuário. - Ordem de autodetecção: navegador padrão do sistema se for baseado em Chromium; caso contrário Chrome → Brave → Edge → Chromium → Chrome Canary.
- Perfis locais
openclawatribuem automaticamentecdpPort/cdpUrl— defina esses valores apenas para CDP remoto. driver: "existing-session"usa Chrome DevTools MCP em vez de CDP bruto. Não definacdpUrlpara esse driver.- Defina
browser.profiles.<name>.userDataDirquando um perfil existing-session precisar se conectar a um perfil de usuário Chromium não padrão, como Brave ou Edge.
Usar Brave (ou outro navegador baseado em Chromium)
Se o seu navegador padrão do sistema for baseado em Chromium (Chrome/Brave/Edge/etc), o OpenClaw o usará automaticamente. Definabrowser.executablePath para substituir a
autodetecção:
Exemplo na CLI:
Controle local vs remoto
- Controle local (padrão): o Gateway inicia o serviço de controle em loopback e pode iniciar um navegador local.
- Controle remoto (host de nó): execute um host de nó na máquina que tem o navegador; o Gateway faz proxy das ações do navegador para ele.
- CDP remoto: defina
browser.profiles.<name>.cdpUrl(oubrowser.cdpUrl) para conectar-se a um navegador remoto baseado em Chromium. Nesse caso, o OpenClaw não iniciará um navegador local.
- perfis gerenciados locais:
openclaw browser stoppara o processo do navegador que o OpenClaw iniciou - perfis attach-only e CDP remoto:
openclaw browser stopfecha a sessão ativa de controle e libera substituições de emulação do Playwright/CDP (viewport, esquema de cores, localidade, fuso horário, modo offline e estado semelhante), mesmo que nenhum processo de navegador tenha sido iniciado pelo OpenClaw
- Tokens de query (por exemplo,
https://provider.example?token=<token>) - Autenticação HTTP Basic (por exemplo,
https://user:pass@provider.example)
/json/* e ao se conectar
ao WebSocket CDP. Prefira variáveis de ambiente ou gerenciadores de segredos para
tokens em vez de fazer commit deles em arquivos de configuração.
Proxy de navegador do nó (padrão sem configuração)
Se você executar um host de nó na máquina que tem o seu navegador, o OpenClaw pode rotear automaticamente chamadas da ferramenta de navegador para esse nó sem nenhuma configuração extra de navegador. Esse é o caminho padrão para gateways remotos. Observações:- O host de nó expõe seu servidor local de controle do navegador por meio de um comando de proxy.
- Os perfis vêm da própria configuração
browser.profilesdo nó (igual ao local). nodeHost.browserProxy.allowProfilesé opcional. Deixe vazio para o comportamento legado/padrão: todos os perfis configurados permanecem acessíveis pelo proxy, incluindo rotas de criar/excluir perfil.- Se você definir
nodeHost.browserProxy.allowProfiles, o OpenClaw tratará isso como um limite de menor privilégio: apenas perfis na allowlist poderão ser usados como alvo, e rotas persistentes de criar/excluir perfil serão bloqueadas na superfície de proxy. - Desative se não quiser isso:
- No nó:
nodeHost.browserProxy.enabled=false - No gateway:
gateway.nodes.browser.mode="off"
- No nó:
Browserless (CDP remoto hospedado)
Browserless é um serviço Chromium hospedado que expõe URLs de conexão CDP por HTTPS e WebSocket. O OpenClaw pode usar qualquer uma das formas, mas para um perfil de navegador remoto a opção mais simples é a URL WebSocket direta da documentação de conexão do Browserless. Exemplo:- Substitua
<BROWSERLESS_API_KEY>pelo seu token real do Browserless. - Escolha o endpoint de região que corresponde à sua conta Browserless (veja a documentação deles).
- Se o Browserless fornecer uma URL base HTTPS, você pode convertê-la para
wss://para uma conexão CDP direta ou manter a URL HTTPS e deixar o OpenClaw descobrir/json/version.
Provedores CDP de WebSocket direto
Alguns serviços de navegador hospedados expõem um endpoint WebSocket direto em vez de a descoberta CDP padrão baseada em HTTP (/json/version). O OpenClaw oferece suporte a ambos:
- Endpoints HTTP(S) — o OpenClaw chama
/json/versionpara descobrir a URL do depurador WebSocket e então se conecta. - Endpoints WebSocket (
ws:///wss://) — o OpenClaw se conecta diretamente, ignorando/json/version. Use isso para serviços como Browserless, Browserbase ou qualquer provedor que forneça uma URL WebSocket.
Browserbase
Browserbase é uma plataforma em nuvem para executar navegadores headless com resolução integrada de CAPTCHA, modo furtivo e proxies residenciais.- Cadastre-se e copie sua API Key do painel Overview.
- Substitua
<BROWSERBASE_API_KEY>pela sua chave de API real do Browserbase. - O Browserbase cria automaticamente uma sessão de navegador ao conectar via WebSocket, então nenhuma etapa manual de criação de sessão é necessária.
- O plano gratuito permite uma sessão simultânea e uma hora de navegador por mês. Consulte pricing para os limites dos planos pagos.
- Consulte a documentação do Browserbase para a referência completa da API, guias de SDK e exemplos de integração.
Segurança
Ideias principais:- O controle do navegador é somente loopback; o acesso passa pela autenticação do Gateway ou pelo emparelhamento do nó.
- A API HTTP autônoma do navegador em loopback usa apenas autenticação por segredo compartilhado:
autenticação bearer com token do gateway,
x-openclaw-passwordou autenticação HTTP Basic com a senha configurada do gateway. - Cabeçalhos de identidade do Tailscale Serve e
gateway.auth.mode: "trusted-proxy"não autenticam essa API autônoma do navegador em loopback. - Se o controle do navegador estiver habilitado e nenhuma autenticação por segredo compartilhado estiver configurada, o OpenClaw
gera automaticamente
gateway.auth.tokenna inicialização e o persiste na configuração. - O OpenClaw não gera automaticamente esse token quando
gateway.auth.modejá épassword,noneoutrusted-proxy. - Mantenha o Gateway e quaisquer hosts de nó em uma rede privada (Tailscale); evite exposição pública.
- Trate URLs/tokens remotos de CDP como segredos; prefira variáveis de ambiente ou um gerenciador de segredos.
- Prefira endpoints criptografados (HTTPS ou WSS) e tokens de curta duração quando possível.
- Evite incorporar tokens de longa duração diretamente em arquivos de configuração.
Perfis (múltiplos navegadores)
O OpenClaw oferece suporte a vários perfis nomeados (configurações de roteamento). Os perfis podem ser:- gerenciados pelo openclaw: uma instância dedicada de navegador baseado em Chromium com seu próprio diretório de dados do usuário + porta CDP
- remoto: uma URL CDP explícita (navegador baseado em Chromium em execução em outro lugar)
- sessão existente: seu perfil Chrome existente via conexão automática do Chrome DevTools MCP
- O perfil
openclawé criado automaticamente se estiver ausente. - O perfil
useré integrado para conexão a sessão existente do Chrome MCP. - Perfis de sessão existente são opt-in além de
user; crie-os com--driver existing-session. - Portas CDP locais são alocadas de 18800–18899 por padrão.
- Excluir um perfil move seu diretório de dados local para a Lixeira.
?profile=<name>; a CLI usa --browser-profile.
Sessão existente via Chrome DevTools MCP
O OpenClaw também pode se conectar a um perfil de navegador baseado em Chromium já em execução por meio do servidor oficial Chrome DevTools MCP. Isso reutiliza as abas e o estado de login já abertos nesse perfil de navegador. Referências oficiais de contexto e configuração: Perfil integrado:user
- O perfil integrado
userusa conexão automática do Chrome MCP, que tem como alvo o perfil local padrão do Google Chrome.
userDataDir para Brave, Edge, Chromium ou um perfil Chrome não padrão:
- Abra a página de inspeção desse navegador para depuração remota.
- Habilite a depuração remota.
- Mantenha o navegador em execução e aprove o prompt de conexão quando o OpenClaw se conectar.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statusmostradriver: existing-sessionstatusmostratransport: chrome-mcpstatusmostrarunning: truetabslista suas abas de navegador já abertassnapshotretorna refs da aba ao vivo selecionada
- o navegador baseado em Chromium alvo é versão
144+ - a depuração remota está habilitada na página de inspeção desse navegador
- o navegador exibiu e você aceitou o prompt de consentimento da conexão
openclaw doctormigra a configuração antiga de navegador baseada em extensão e verifica que o Chrome está instalado localmente para perfis padrão de conexão automática, mas ele não pode habilitar a depuração remota do lado do navegador para você
- Use
profile="user"quando precisar do estado do navegador autenticado do usuário. - Se você usar um perfil personalizado de sessão existente, passe esse nome de perfil explícito.
- Escolha esse modo somente quando o usuário estiver no computador para aprovar o prompt de conexão.
- o Gateway ou host de nó pode iniciar
npx chrome-devtools-mcp@latest --autoConnect
- Esse caminho tem risco maior do que o perfil isolado
openclaw, porque ele pode agir dentro da sua sessão autenticada do navegador. - O OpenClaw não inicia o navegador para esse driver; ele se conecta apenas a uma sessão existente.
- O OpenClaw usa aqui o fluxo oficial
--autoConnectdo Chrome DevTools MCP. SeuserDataDirestiver definido, o OpenClaw o repassa para ter como alvo esse diretório explícito de dados de usuário do Chromium. - Capturas de tela de sessão existente oferecem suporte a capturas de página e capturas
de elemento com
--refa partir de snapshots, mas não a seletores CSS--element. - Capturas de tela de página em sessão existente funcionam sem Playwright por meio do Chrome MCP.
Capturas de elemento baseadas em ref (
--ref) também funcionam ali, mas--full-pagenão pode ser combinado com--refou--element. - As ações de sessão existente ainda são mais limitadas do que o caminho do navegador
gerenciado:
click,type,hover,scrollIntoView,drageselectexigem refs de snapshot em vez de seletores CSSclické apenas com botão esquerdo (sem substituições de botão ou modificadores)typenão oferece suporte aslowly=true; usefilloupresspressnão oferece suporte adelayMshover,scrollIntoView,drag,select,filleevaluatenão oferecem suporte a substituições de timeout por chamadaselectatualmente oferece suporte apenas a um único valor
wait --urlde sessão existente oferece suporte a padrões exatos, substring e glob como outros drivers de navegador.wait --load networkidleainda não é compatível.- Hooks de upload de sessão existente exigem
refouinputRef, oferecem suporte a um arquivo por vez e não oferecem suporte a direcionamento por CSSelement. - Hooks de diálogo de sessão existente não oferecem suporte a substituições de timeout.
- Alguns recursos ainda exigem o caminho do navegador gerenciado, incluindo
ações em lote, exportação em PDF, interceptação de download e
responsebody. - Sessão existente é local ao host. Se o Chrome estiver em outra máquina ou em um namespace de rede diferente, use CDP remoto ou um host de nó.
Garantias de isolamento
- Diretório de dados do usuário dedicado: nunca toca no seu perfil pessoal do navegador.
- Portas dedicadas: evita
9222para prevenir colisões com fluxos de trabalho de desenvolvimento. - Controle determinístico de abas: as abas são direcionadas por
targetId, não pela “última aba”.
Seleção do navegador
Ao iniciar localmente, o OpenClaw escolhe o primeiro disponível:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Plataformas:
- macOS: verifica
/Applicationse~/Applications. - Linux: procura por
google-chrome,brave,microsoft-edge,chromiumetc. - Windows: verifica locais comuns de instalação.
API de controle (opcional)
Somente para integrações locais, o Gateway expõe uma pequena API HTTP em loopback:- Status/iniciar/parar:
GET /,POST /start,POST /stop - Abas:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/captura de tela:
GET /snapshot,POST /screenshot - Ações:
POST /navigate,POST /act - Hooks:
POST /hooks/file-chooser,POST /hooks/dialog - Downloads:
POST /download,POST /wait/download - Depuração:
GET /console,POST /pdf - Depuração:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Rede:
POST /response/body - Estado:
GET /cookies,POST /cookies/set,POST /cookies/clear - Estado:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Configurações:
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 a autenticação do gateway por segredo compartilhado estiver configurada, as rotas HTTP do navegador também exigirão autenticação:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>ou autenticação HTTP Basic com essa senha
- Esta API autônoma do navegador em loopback não consome cabeçalhos de proxy confiável nem cabeçalhos de identidade do Tailscale Serve.
- Se
gateway.auth.modefornoneoutrusted-proxy, essas rotas de navegador em loopback não herdam esses modos com identidade; mantenha-as somente em loopback.
Contrato de erro de /act
POST /act usa uma resposta de erro estruturada para falhas de validação em nível de rota e
de política:
code:
ACT_KIND_REQUIRED(HTTP 400):kindestá ausente ou não é reconhecido.ACT_INVALID_REQUEST(HTTP 400): o payload da ação falhou na normalização ou validação.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectorfoi usado com um tipo de ação incompatível.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(ouwait --fn) está desabilitado por configuração.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdde nível superior ou em lote entra em conflito com o alvo da solicitação.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): a ação não é compatível com perfis de sessão existente.
{ "error": "<message>" } sem um
campo code.
Requisito do Playwright
Alguns recursos (navigate/act/snapshot AI/snapshot por função, capturas de tela de elemento, PDF) exigem Playwright. Se o Playwright não estiver instalado, esses endpoints retornam um erro 501 claro. O que ainda funciona sem Playwright:- Snapshots ARIA
- Capturas de tela de página para o navegador gerenciado
openclawquando um WebSocket CDP por aba estiver disponível - Capturas de tela de página para perfis
existing-session/ Chrome MCP - Capturas de tela baseadas em ref (
--ref) deexisting-sessiona partir da saída de snapshot
navigateact- snapshots AI / snapshots por função
- capturas de tela de elemento por seletor CSS (
--element) - exportação completa de PDF do navegador
--full-page; a rota retorna fullPage is not supported for element screenshots.
Se você vir Playwright is not available in this gateway build, instale o pacote completo
do Playwright (não playwright-core) e reinicie o gateway, ou reinstale o
OpenClaw com suporte a navegador.
Instalação do Playwright no Docker
Se o seu Gateway executa no Docker, evitenpx playwright (conflitos de override do npm).
Use a CLI empacotada:
PLAYWRIGHT_BROWSERS_PATH (por exemplo,
/home/node/.cache/ms-playwright) e garanta que /home/node seja persistido via
OPENCLAW_HOME_VOLUME ou um bind mount. Consulte Docker.
Como funciona (interno)
Fluxo de alto nível:- Um pequeno servidor de controle aceita solicitações HTTP.
- Ele se conecta a navegadores baseados em Chromium (Chrome/Brave/Edge/Chromium) via CDP.
- Para ações avançadas (clicar/digitar/snapshot/PDF), ele usa Playwright sobre o CDP.
- Quando o Playwright está ausente, apenas operações que não dependem de Playwright ficam disponíveis.
Referência rápida da CLI
Todos os comandos aceitam--browser-profile <name> para direcionar um perfil específico.
Todos os comandos também aceitam --json para saída legível por máquina (payloads estáveis).
Básico:
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
- Para perfis attach-only e CDP remoto,
openclaw browser stopainda é o comando correto de limpeza após os testes. Ele fecha a sessão ativa de controle e limpa substituições temporárias de emulação em vez de encerrar o navegador subjacente. 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"
uploadedialogsão chamadas de armamento; execute-as antes do clique/tecla que dispara o seletor/diálogo.- Caminhos de saída de download e trace são restritos às raízes temporárias do OpenClaw:
- traces:
/tmp/openclaw(fallback:${os.tmpdir()}/openclaw) - downloads:
/tmp/openclaw/downloads(fallback:${os.tmpdir()}/openclaw/downloads)
- traces:
- Caminhos de upload são restritos a uma raiz temporária de uploads do OpenClaw:
- uploads:
/tmp/openclaw/uploads(fallback:${os.tmpdir()}/openclaw/uploads)
- uploads:
uploadtambém pode definir inputs de arquivo diretamente por--input-refou--element.snapshot:--format ai(padrão quando o Playwright está instalado): retorna um snapshot AI com refs numéricos (aria-ref="<n>").--format aria: retorna a árvore de acessibilidade (sem refs; apenas inspeção).--efficient(ou--mode efficient): preset compacto de snapshot por função (interactive + compact + depth + maxChars menor).- Padrão de configuração (somente ferramenta/CLI): defina
browser.snapshotDefaults.mode: "efficient"para usar snapshots eficientes quando o chamador não passar um modo (consulte Configuração do Gateway). - Opções de snapshot por função (
--interactive,--compact,--depth,--selector) forçam um snapshot baseado em função com refs comoref=e12. --frame "<iframe selector>"restringe snapshots por função a um iframe (em conjunto com refs por função comoe12).--interactiveproduz uma lista plana e fácil de escolher de elementos interativos (melhor para conduzir ações).--labelsadiciona uma captura de tela apenas do viewport com rótulos de ref sobrepostos (imprimeMEDIA:<path>).
click/type/etc exigem umrefdesnapshot(seja numérico12ou ref por funçãoe12). Seletores CSS intencionalmente não são compatíveis para ações.
Snapshots e refs
O OpenClaw oferece suporte a dois estilos de “snapshot”:-
Snapshot AI (refs numéricos):
openclaw browser snapshot(padrão;--format ai)- Saída: um snapshot em texto que inclui refs numéricos.
- Ações:
openclaw browser click 12,openclaw browser type 23 "hello". - Internamente, o ref é resolvido por meio de
aria-refdo Playwright.
-
Snapshot por função (refs de função como
e12):openclaw browser snapshot --interactive(ou--compact,--depth,--selector,--frame)- Saída: uma lista/árvore baseada em função com
[ref=e12](e opcionalmente[nth=1]). - Ações:
openclaw browser click e12,openclaw browser highlight e12. - Internamente, o ref é resolvido por meio de
getByRole(...)(maisnth()para duplicados). - Adicione
--labelspara incluir uma captura de tela do viewport com rótulose12sobrepostos.
- Saída: uma lista/árvore baseada em função com
- Refs não são estáveis entre navegações; se algo falhar, execute
snapshotnovamente e use um ref novo. - Se o snapshot por função foi tirado com
--frame, os refs por função ficam restritos a esse iframe até o próximo snapshot por função.
Recursos avançados de espera
Você pode esperar por mais do que apenas tempo/texto:- Esperar por URL (globs compatíveis com Playwright):
openclaw browser wait --url "**/dash"
- Esperar por estado de carregamento:
openclaw browser wait --load networkidle
- Esperar por um predicado JS:
openclaw browser wait --fn "window.ready===true"
- Esperar por um seletor se tornar visível:
openclaw browser wait "#main"
Fluxos de depuração
Quando uma ação falha (por exemplo, “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Use
click <ref>/type <ref>(prefira refs por função no modo interativo) - Se ainda falhar:
openclaw browser highlight <ref>para ver o que o Playwright está direcionando - Se a página se comportar de forma estranha:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Para depuração profunda: grave um trace:
openclaw browser trace start- reproduza o problema
openclaw browser trace stop(imprimeTRACE:<path>)
Saída JSON
--json é para scripts e ferramentas estruturadas.
Exemplos:
refs mais um pequeno bloco stats (linhas/chars/refs/interactive), para que ferramentas possam raciocinar sobre tamanho e densidade do payload.
Controles de estado e ambiente
Eles são úteis para fluxos do tipo “fazer o site se comportar como X”:- Cookies:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Headers:
set headers --headers-json '{"X-Debug":"1"}'(o legadoset headers --json '{"X-Debug":"1"}'continua compatível) - Autenticação HTTP Basic:
set credentials user pass(ou--clear) - Geolocalização:
set geo <lat> <lon> --origin "https://example.com"(ou--clear) - Mídia:
set media dark|light|no-preference|none - Fuso horário / localidade:
set timezone ...,set locale ... - Dispositivo / viewport:
set device "iPhone 14"(presets de dispositivo do Playwright)set viewport 1280 720
Segurança e privacidade
- O perfil de navegador openclaw pode conter sessões autenticadas; trate-o como sensível.
browser act kind=evaluate/openclaw browser evaluateewait --fnexecutam JavaScript arbitrário no contexto da página. Injeção de prompt pode direcionar isso. Desative combrowser.evaluateEnabled=falsese você não precisar disso.- Para observações sobre logins e anti-bot (X/Twitter etc.), consulte Login no navegador + publicação no X/Twitter.
- Mantenha o Gateway/host de nó privado (somente loopback ou tailnet).
- Endpoints CDP remotos são poderosos; encapsule e proteja-os.
Solução de problemas
Para problemas específicos do Linux (especialmente Chromium por snap), consulte Solução de problemas do navegador. Para configurações separadas de host WSL2 Gateway + Windows Chrome, consulte Solução de problemas de WSL2 + Windows + CDP remoto do Chrome.Ferramentas do agente + como o controle funciona
O agente recebe uma ferramenta para automação do navegador:browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotretorna uma árvore de UI estável (AI ou ARIA).browser actusa os IDsrefdo snapshot para clicar/digitar/arrastar/selecionar.browser screenshotcaptura pixels (página inteira ou elemento).browseraceita:profilepara escolher um perfil de navegador nomeado (openclaw, chrome ou CDP remoto).target(sandbox|host|node) para selecionar onde o navegador está.- Em sessões com sandbox,
target: "host"exigeagents.defaults.sandbox.browser.allowHostControl=true. - Se
targetfor omitido: sessões com sandbox usamsandboxpor padrão, sessões sem sandbox usamhostpor padrão. - Se um nó com capacidade de navegador estiver conectado, a ferramenta pode ser roteada automaticamente para ele, a menos que você fixe
target="host"outarget="node".
Relacionado
- Visão geral das ferramentas — todas as ferramentas de agente disponíveis
- Sandboxing — controle do navegador em ambientes com sandbox
- Segurança — riscos e hardening do controle do navegador