Navegador (gerenciado pelo openclaw)
O OpenClaw pode executar um perfil dedicado de 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
userintegrado se conecta à sua sessão real do Chrome já autenticada 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 vários perfis (
openclaw,work,remote, …).
Início rápido
openclaw browser estiver completamente ausente, ou se o agente disser que a ferramenta de navegador
está indisponível, vá para Missing browser command or tool.
Controle por plugin
A ferramenta padrãobrowser agora é um plugin empacotado que já vem 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 de navegador precisa de ambos:
plugins.entries.browser.enablednão desabilitadobrowser.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 juntos. Sua configuração browser.* permanece intacta para que um
plugin substituto a reutilize.
O plugin empacotado de navegador agora também é dono da implementação de runtime do navegador.
O núcleo mantém apenas helpers compartilhados do Plugin SDK mais reexports de compatibilidade para
caminhos internos antigos de importação. 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
pertencente ao núcleo.
Alterações na configuração do navegador ainda exigem reinício 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 relatar 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=truenão basta sozinho quandoplugins.allowestá definido.plugins.entries.browser.enabled=truetambém não basta sozinho quandoplugins.allowestá definido.tools.alsoAllow: ["browser"]não carrega o plugin empacotado de navegador. 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 relata a ferramenta de navegador como indisponível ou ausente.
Perfis: openclaw vs user
openclaw: navegador gerenciado e isolado (não requer extensão).user: perfil embutido de conexão Chrome MCP para sua sessão real do Chrome já autenticada.
- Padrão: use o navegador isolado
openclaw. - Prefira
profile="user"quando sessões já autenticadas existentes importarem e o usuário estiver no computador para clicar/aprovar qualquer prompt de conexão. profileé o override explícito quando você quer 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 faz bind em loopback em uma porta derivada de
gateway.port(padrão:18791, que é gateway + 2). - Se você sobrescrever a porta do Gateway (
gateway.portouOPENCLAW_GATEWAY_PORT), as portas derivadas do navegador mudam para permanecer na mesma “família”. cdpUrlassume por padrão a porta CDP local gerenciada quando não definido.remoteCdpTimeoutMsse aplica a verificações de alcance de CDP remoto (não loopback).remoteCdpHandshakeTimeoutMsse aplica a verificações de alcance do handshake WebSocket do CDP remoto.- Navegação/abertura de aba no navegador é protegida contra SSRF antes da navegação e verificada novamente, no melhor esforço, na URL final
http(s)após a navegação. - No modo estrito de SSRF, descoberta/sondas de endpoint CDP remoto (
cdpUrl, incluindo buscas em/json/version) também são verificadas. browser.ssrfPolicy.dangerouslyAllowPrivateNetworktem padrãotrue(modelo de rede confiável). Defina comofalsepara navegação pública estrita.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ê veja 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-os 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 deve se conectar a um perfil de usuário Chromium não padrão, como Brave ou Edge.
Use 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 usa automaticamente. Definabrowser.executablePath para sobrescrever a
autodetecção:
Exemplo via 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 (node host): execute um node host 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 se conectar 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 overrides de emulação 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 em 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 gravá-los em arquivos de configuração.
Proxy de navegador por node (padrão zero-config)
Se você executar um node host na máquina que tem seu navegador, o OpenClaw pode rotear automaticamente chamadas da ferramenta de navegador para esse node sem nenhuma configuração extra de navegador. Esse é o caminho padrão para gateways remotos. Observações:- O node host expõe seu servidor local de controle de navegador por meio de um comando proxy.
- Os perfis vêm da própria configuração
browser.profilesdo node (igual ao local). nodeHost.browserProxy.allowProfilesé opcional. Deixe vazio para o comportamento legado/padrão: todos os perfis configurados continuam acessíveis pelo proxy, incluindo rotas de criação/exclusão de perfil.- Se você definir
nodeHost.browserProxy.allowProfiles, o OpenClaw o trata como um limite de menor privilégio: apenas perfis na allowlist podem ser direcionados, e rotas persistentes de criação/exclusão de perfil são bloqueadas na superfície do proxy. - Desative se não quiser isso:
- No node:
nodeHost.browserProxy.enabled=false - No gateway:
gateway.nodes.browser.mode="off"
- No node:
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 formato, 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 corresponda à 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 que o OpenClaw descubra/json/version.
Provedores CDP WebSocket diretos
Alguns serviços de navegador hospedado expõem um endpoint WebSocket direto em vez de descoberta CDP padrão baseada em HTTP (/json/version). O OpenClaw suporta ambos:
- Endpoints HTTP(S) — o OpenClaw chama
/json/versionpara descobrir a URL WebSocket do depurador 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 de CAPTCHA integrada, modo stealth e proxies residenciais.- Cadastre-se e copie sua API Key do dashboard Overview.
- Substitua
<BROWSERBASE_API_KEY>pela sua chave de API real do Browserbase. - O Browserbase cria automaticamente uma sessão de navegador ao conectar o WebSocket, então não é necessária nenhuma etapa manual de criação de sessão.
- O nível gratuito permite uma sessão concorrente e uma hora de navegador por mês. Consulte pricing para 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 flui pela autenticação do Gateway ou pelo pareamento do node.
- A API HTTP independente de navegador em loopback usa somente autenticação por segredo compartilhado:
autenticação bearer do token do gateway,
x-openclaw-password, ou HTTP Basic auth com a senha configurada do gateway. - Cabeçalhos de identidade do Tailscale Serve e
gateway.auth.mode: "trusted-proxy"não autenticam essa API independente de 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á forpassword,noneoutrusted-proxy. - Mantenha o Gateway e quaisquer node hosts em uma rede privada (Tailscale); evite exposição pública.
- Trate URLs/tokens CDP remotos como segredos; prefira variáveis de ambiente ou um gerenciador de segredos.
- Prefira endpoints criptografados (HTTPS ou WSS) e tokens de curta duração sempre que 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 de usuário + porta CDP
- remotos: uma URL CDP explícita (navegador baseado em Chromium rodando em outro lugar)
- sessão existente: seu perfil existente do Chrome por conexão automática do Chrome DevTools MCP
- O perfil
openclawé criado automaticamente se estiver ausente. - O perfil
useré embutido para conexão existing-session do Chrome MCP. - Perfis existing-session são opt-in além do
user; crie-os com--driver existing-session. - Portas CDP locais são alocadas por padrão em 18800–18899.
- Excluir um perfil move seu diretório de dados local para a Lixeira.
?profile=<name>; a CLI usa --browser-profile.
Existing-session 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 embutido:user
- O perfil
userembutido usa conexão automática Chrome MCP, que mira o perfil local padrão do Google Chrome.
userDataDir para Brave, Edge, Chromium ou um perfil não padrão do Chrome:
- 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 já abertas no navegadorsnapshotretorna refs da aba ativa selecionada
- o navegador-alvo baseado em Chromium está na versão
144+ - a depuração remota está habilitada na página de inspeção desse navegador
- o navegador mostrou e você aceitou o prompt de consentimento da conexão
openclaw doctormigra configuração antiga de navegador baseada em extensão e verifica se o Chrome está instalado localmente para perfis padrão de conexão automática, mas ele não consegue habilitar a depuração remota no lado do navegador para você
- Use
profile="user"quando precisar do estado do navegador autenticado do usuário. - Se você usa um perfil existing-session personalizado, passe esse nome de perfil explícito.
- Escolha esse modo apenas quando o usuário estiver no computador para aprovar o prompt de conexão.
- o Gateway ou node host pode iniciar
npx chrome-devtools-mcp@latest --autoConnect
- Esse caminho é de risco mais alto 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 mirar esse diretório explícito de dados de usuário do Chromium. - Capturas de tela em existing-session suportam capturas da página e capturas de elemento com
--refa partir de snapshots, mas não seletores CSS--element. - Capturas de tela de página em existing-session funcionam sem Playwright via Chrome MCP.
Capturas de elemento baseadas em ref (
--ref) também funcionam ali, mas--full-pagenão pode ser combinado com--refnem com--element. - Ações em existing-session ainda são mais limitadas do que no caminho de navegador gerenciado:
click,type,hover,scrollIntoView,drageselectexigem refs de snapshot em vez de seletores CSSclické somente com botão esquerdo (sem overrides de botão ou modificadores)typenão suportaslowly=true; usefilloupresspressnão suportadelayMshover,scrollIntoView,drag,select,filleevaluatenão suportam overrides de timeout por chamadaselectatualmente suporta apenas um único valor
- Existing-session
wait --urlsuporta padrões exatos, substring e glob como outros drivers de navegador.wait --load networkidleainda não é compatível. - Hooks de upload em existing-session exigem
refouinputRef, suportam um arquivo por vez e não suportam direcionamento CSSelement. - Hooks de diálogo em existing-session não suportam overrides de timeout.
- Alguns recursos ainda exigem o caminho de navegador gerenciado, incluindo
ações em lote, exportação de PDF, interceptação de download e
responsebody. - Existing-session é local ao host. Se o Chrome estiver em outra máquina ou em outro namespace de rede, use CDP remoto ou um node host.
Garantias de isolamento
- Diretório de dados de usuário dedicado: nunca toca no seu perfil pessoal do navegador.
- Portas dedicadas: evita
9222para impedir colisões com fluxos de desenvolvimento. - Controle determinístico de abas: mira abas 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
google-chrome,brave,microsoft-edge,chromiumetc. - Windows: verifica locais comuns de instalação.
API de controle (opcional)
Apenas para integrações locais, o Gateway expõe uma pequena API HTTP em loopback:- Status/start/stop:
GET /,POST /start,POST /stop - Abas:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/screenshot:
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 por segredo compartilhado do gateway estiver configurada, as rotas HTTP do navegador também exigirão autenticação:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>ou HTTP Basic auth com essa senha
- Esta API independente de navegador em loopback não consome cabeçalhos de identidade de trusted-proxy nem de Tailscale Serve.
- Se
gateway.auth.modefornoneoutrusted-proxy, estas rotas de navegador em loopback não herdam esses modos com identidade; mantenha-as somente em loopback.
Exigência do Playwright
Alguns recursos (navigate/act/snapshot AI/role snapshot, screenshots 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
--refbaseadas em existing-session a partir da saída de snapshot
navigateact- Snapshots AI / role snapshots
- 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 Gateway estiver rodando em Docker, evitenpx playwright (conflitos de override do npm).
Use a CLI empacotada em vez disso:
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 (internamente)
Fluxo de alto nível:- Um pequeno servidor de controle aceita requisiçõ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), usa Playwright por cima do CDP.
- Quando o Playwright está ausente, apenas operações sem Playwright ficam disponíveis.
Referência rápida da CLI
Todos os comandos aceitam--browser-profile <name> para mirar um perfil específico.
Todos os comandos também aceitam --json para saída legível por máquina (payloads estáveis).
Noções básicas:
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 testes. Ele fecha a sessão ativa de controle e limpa overrides temporários 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 preparo; execute-as antes do click/press 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 via--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 role snapshot (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 Gateway configuration). - Opções de role snapshot (
--interactive,--compact,--depth,--selector) forçam um snapshot baseado em papel com refs comoref=e12. --frame "<iframe selector>"limita role snapshots a um iframe (combina com refs de role comoe12).--interactivegera uma lista plana e fácil de escolher de elementos interativos (melhor para conduzir ações).--labelsadiciona uma captura de tela somente do viewport com rótulos de ref sobrepostos (imprimeMEDIA:<path>).
click/type/etc exigem umrefdesnapshot(numérico12ou role refe12). Seletores CSS são intencionalmente não suportados para ações.
Snapshots e refs
O OpenClaw suporta dois estilos de “snapshot”:-
AI snapshot (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 via
aria-refdo Playwright.
-
Role snapshot (refs de role como
e12):openclaw browser snapshot --interactive(ou--compact,--depth,--selector,--frame)- Saída: uma lista/árvore baseada em papel com
[ref=e12](e opcionalmente[nth=1]). - Ações:
openclaw browser click e12,openclaw browser highlight e12. - Internamente, o ref é resolvido via
getByRole(...)(maisnth()para duplicados). - Adicione
--labelspara incluir uma captura do viewport com rótulose12sobrepostos.
- Saída: uma lista/árvore baseada em papel com
- Refs não são estáveis entre navegações; se algo falhar, execute novamente
snapshote use um ref novo. - Se o role snapshot foi tirado com
--frame, os refs de role ficam limitados àquele iframe até o próximo role snapshot.
Melhorias de espera
Você pode esperar mais do que apenas tempo/texto:- Esperar por URL (globs suportados pelo 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 um seletor ficar 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 de role no modo interativo) - Se ainda falhar:
openclaw browser highlight <ref>para ver o que o Playwright está mirando - 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 “faça 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) - HTTP basic auth:
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. Prompt injection pode conduzir isso. Desabilite combrowser.evaluateEnabled=falsese você não precisar.- Para observações sobre logins e anti-bot (X/Twitter etc.), consulte Browser login + X/Twitter posting.
- Mantenha o Gateway/node host privado (somente loopback ou tailnet).
- Endpoints CDP remotos são poderosos; faça túnel e proteja-os.
Solução de problemas
Para problemas específicos de Linux (especialmente Chromium via snap), consulte Browser troubleshooting. Para configurações divididas WSL2 Gateway + Windows Chrome em hosts diferentes, consulte WSL2 + Windows + remote Chrome CDP troubleshooting.Ferramentas do agente + como o controle funciona
O agente recebe uma ferramenta para automação de 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 nomeado de navegador (openclaw, chrome ou CDP remoto).target(sandbox|host|node) para selecionar onde o navegador vive.- Em sessões sandboxed,
target: "host"exigeagents.defaults.sandbox.browser.allowHostControl=true. - Se
targetfor omitido: sessões sandboxed usamsandboxpor padrão, sessões sem sandbox usamhostpor padrão. - Se um node com capacidade de navegador estiver conectado, a ferramenta pode rotear automaticamente para ele, a menos que você fixe
target="host"outarget="node".
Relacionado
- Tools Overview — todas as ferramentas de agente disponíveis
- Sandboxing — controle de navegador em ambientes sandboxed
- Security — riscos e endurecimento do controle de navegador