Pular para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Para configuração, ajustes e solução de problemas, consulte Browser. Esta página é a referência para a API HTTP de controle local, a CLI openclaw browser e padrões de script (snapshots, refs, esperas, fluxos de depuração).

API de controle (opcional)

Apenas para integrações locais, o Gateway expõe uma pequena API HTTP de local 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
  • Permissões: POST /permissions/grant
  • 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
Todos os endpoints aceitam ?profile=<name>. POST /start?headless=true solicita uma inicialização headless pontual para perfis gerenciados locais sem alterar a configuração persistida do navegador; perfis attach-only, CDP remoto e existing-session rejeitam essa substituição porque o OpenClaw não inicia esses processos de navegador. Se a autenticação do gateway por segredo compartilhado estiver configurada, as rotas HTTP do navegador também exigem autenticação:
  • Authorization: Bearer <gateway token>
  • x-openclaw-password: <gateway password> ou autenticação HTTP Basic com essa senha
Observações:
  • Esta API de navegador local loopback independente não consome cabeçalhos de identidade trusted-proxy ou Tailscale Serve.
  • Se gateway.auth.mode for none ou trusted-proxy, essas rotas de navegador de local loopback não herdam esses modos com identidade; mantenha-as apenas em local loopback.

Contrato de erro de /act

POST /act usa uma resposta de erro estruturada para validação no nível da rota e falhas de política:
{ "error": "<message>", "code": "ACT_*" }
Valores atuais de code:
  • ACT_KIND_REQUIRED (HTTP 400): kind está ausente ou não é reconhecido.
  • ACT_INVALID_REQUEST (HTTP 400): a carga da ação falhou na normalização ou validação.
  • ACT_SELECTOR_UNSUPPORTED (HTTP 400): selector foi usado com um tipo de ação sem suporte.
  • ACT_EVALUATE_DISABLED (HTTP 403): evaluate (ou wait --fn) está desativado pela configuração.
  • ACT_TARGET_ID_MISMATCH (HTTP 403): targetId de nível superior ou em lote entra em conflito com o destino da solicitação.
  • ACT_EXISTING_SESSION_UNSUPPORTED (HTTP 501): a ação não é compatível com perfis existing-session.
Outras falhas em tempo de execução ainda podem retornar { "error": "<message>" } sem um campo code.

Requisito do Playwright

Alguns recursos (navigate/act/snapshot de IA/snapshot por função, capturas de tela de elementos, PDF) exigem Playwright. Se o Playwright não estiver instalado, esses endpoints retornam um erro 501 claro. O que ainda funciona sem o Playwright:
  • Snapshots ARIA
  • Snapshots de acessibilidade em estilo de função (--interactive, --compact, --depth, --efficient) quando um WebSocket CDP por aba está disponível. Isso é um fallback para inspeção e descoberta de refs; o Playwright continua sendo o principal mecanismo de ações.
  • Capturas de tela de página para o navegador openclaw gerenciado quando um WebSocket CDP por aba está disponível
  • Capturas de tela de página para perfis existing-session / Chrome MCP
  • Capturas de tela baseadas em refs de existing-session (--ref) a partir da saída de snapshot
O que ainda precisa do Playwright:
  • navigate
  • act
  • Snapshots de IA que dependem do formato nativo de snapshot de IA do Playwright
  • Capturas de tela de elementos por seletor CSS (--element)
  • exportação completa de PDF do navegador
Capturas de tela de elementos também rejeitam --full-page; a rota retorna fullPage is not supported for element screenshots. Se você vir Playwright is not available in this gateway build, o Gateway empacotado não tem a dependência principal de runtime do navegador. Reinstale ou atualize o OpenClaw e reinicie o gateway. Para Docker, instale também os binários do navegador Chromium conforme mostrado abaixo.

Instalação do Playwright no Docker

Se seu Gateway roda no Docker, evite npx playwright (conflitos de substituição do npm). Use a CLI incluída em vez disso:
docker compose run --rm openclaw-cli \
  node /app/node_modules/playwright-core/cli.js install chromium
Para persistir downloads do navegador, defina 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. O OpenClaw detecta automaticamente o Chromium persistido no Linux. Consulte Docker.

Como funciona (interno)

Um pequeno servidor de controle local loopback aceita solicitações HTTP e se conecta a navegadores baseados em Chromium via CDP. Ações avançadas (click/type/snapshot/PDF) passam pelo Playwright sobre CDP; quando o Playwright está ausente, apenas operações que não dependem do Playwright ficam disponíveis. O agente vê uma interface estável enquanto navegadores locais/remotos e perfis são trocados livremente por baixo.

Referência rápida da CLI

Todos os comandos aceitam --browser-profile <name> para direcionar um perfil específico, e --json para saída legível por máquina.
openclaw browser status
openclaw browser start
openclaw browser start --headless # one-shot local managed headless launch
openclaw browser stop            # also clears emulation on attach-only/remote CDP
openclaw browser tabs
openclaw browser tab             # shortcut for current tab
openclaw browser tab new
openclaw browser tab select 2
openclaw browser tab close 2
openclaw browser open https://example.com
openclaw browser focus abcd1234
openclaw browser close abcd1234
openclaw browser screenshot
openclaw browser screenshot --full-page
openclaw browser screenshot --ref 12        # or --ref e12
openclaw browser screenshot --labels
openclaw browser snapshot
openclaw browser snapshot --format aria --limit 200
openclaw browser snapshot --interactive --compact --depth 6
openclaw browser snapshot --efficient
openclaw browser snapshot --labels
openclaw browser snapshot --urls
openclaw browser snapshot --selector "#main" --interactive
openclaw browser snapshot --frame "iframe#main" --interactive
openclaw browser console --level error
openclaw browser errors --clear
openclaw browser requests --filter api --clear
openclaw browser pdf
openclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.com
openclaw browser resize 1280 720
openclaw browser click 12 --double           # or e12 for role refs
openclaw browser click-coords 120 340        # viewport coordinates
openclaw browser type 23 "hello" --submit
openclaw browser press Enter
openclaw browser hover 44
openclaw browser scrollintoview e12
openclaw browser drag 10 11
openclaw browser select 9 OptionA OptionB
openclaw browser download e12 report.pdf
openclaw browser waitfordownload report.pdf
openclaw browser upload /tmp/openclaw/uploads/file.pdf
openclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'
openclaw browser dialog --accept
openclaw browser wait --text "Done"
openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"
openclaw browser evaluate --fn '(el) => el.textContent' --ref 7
openclaw browser highlight e12
openclaw browser trace start
openclaw browser trace stop
openclaw browser cookies
openclaw browser cookies set session abc123 --url "https://example.com"
openclaw browser cookies clear
openclaw browser storage local get
openclaw browser storage local set theme dark
openclaw browser storage session clear
openclaw browser set offline on
openclaw browser set headers --headers-json '{"X-Debug":"1"}'
openclaw browser set credentials user pass            # --clear to remove
openclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"
openclaw browser set media dark
openclaw browser set timezone America/New_York
openclaw browser set locale en-US
openclaw browser set device "iPhone 14"
Observações:
  • upload e dialog são chamadas de preparação; execute-as antes do click/press que aciona o seletor/diálogo.
  • click/type/etc exigem uma ref de snapshot (numérica 12, ref de função e12, ou ref ARIA acionável ax12). Seletores CSS intencionalmente não são compatíveis com ações. Use click-coords quando a posição visível na viewport for o único destino confiável.
  • Caminhos de download, trace e upload são restritos às raízes temporárias do OpenClaw: /tmp/openclaw{,/downloads,/uploads} (fallback: ${os.tmpdir()}/openclaw/...).
  • upload também pode definir inputs de arquivo diretamente via --input-ref ou --element.
IDs e rótulos estáveis de abas sobrevivem à substituição de raw-target do Chromium quando o OpenClaw consegue provar a aba substituta, como a mesma URL ou uma única aba antiga se tornando uma única nova aba após o envio de formulário. IDs de target brutos ainda são voláteis; prefira suggestedTargetId de tabs em scripts. Visão rápida das flags de snapshot:
  • --format ai (padrão com Playwright): snapshot de IA com refs numéricas (aria-ref="<n>").
  • --format aria: árvore de acessibilidade com refs axN. Quando o Playwright está disponível, o OpenClaw vincula refs com IDs DOM de backend à página ao vivo para que ações posteriores possam usá-las; caso contrário, trate a saída apenas como inspeção.
  • --efficient (ou --mode efficient): predefinição compacta de snapshot por função. Defina browser.snapshotDefaults.mode: "efficient" para tornar isso o padrão (consulte Configuração do Gateway).
  • --interactive, --compact, --depth, --selector forçam um snapshot por função com refs ref=e12. --frame "<iframe>" limita snapshots por função a um iframe.
  • --labels adiciona uma captura de tela apenas da viewport com rótulos de ref sobrepostos (imprime MEDIA:<path>).
  • --urls acrescenta destinos de links descobertos aos snapshots de IA.

Snapshots e refs

O OpenClaw oferece suporte a dois estilos de “snapshot”:
  • Snapshot de IA (refs numéricas): openclaw browser snapshot (padrão; --format ai)
    • Saída: um snapshot de texto que inclui refs numéricas.
    • Ações: openclaw browser click 12, openclaw browser type 23 "hello".
    • Internamente, a ref é resolvida via aria-ref do 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, a ref é resolvida via getByRole(...) (mais nth() para duplicatas).
    • Adicione --labels para incluir uma captura de tela da viewport com rótulos e12 sobrepostos.
    • Adicione --urls quando o texto do link for ambíguo e o agente precisar de destinos de navegação concretos.
  • Snapshot ARIA (refs ARIA como ax12): openclaw browser snapshot --format aria
    • Saída: a árvore de acessibilidade como nós estruturados.
    • Ações: openclaw browser click ax12 funciona quando o caminho de snapshot consegue vincular a ref por meio do Playwright e de IDs DOM de backend do Chrome.
  • Se o Playwright não estiver disponível, snapshots ARIA ainda podem ser úteis para inspeção, mas as refs podem não ser acionáveis. Faça um novo snapshot com --format ai ou --interactive quando precisar de refs de ação.
  • Prova Docker para o caminho de fallback raw-CDP: pnpm test:docker:browser-cdp-snapshot inicia o Chromium com CDP, executa browser doctor --deep e verifica se snapshots por função incluem URLs de links, clicáveis promovidos por cursor e metadados de iframe.
Comportamento de ref:
  • Refs não são estáveis entre navegações; se algo falhar, execute snapshot novamente e use uma ref nova.
  • /act retorna o targetId bruto atual após uma substituição disparada por ação quando consegue comprovar a aba substituta. Continue usando ids/rótulos de abas estáveis para comandos de acompanhamento.
  • Se o snapshot de funções tiver sido obtido com --frame, as refs de função ficam escopadas a esse iframe até o próximo snapshot de funções.
  • Refs axN desconhecidas ou obsoletas falham rapidamente em vez de cair no seletor aria-ref do Playwright. Execute um snapshot novo na mesma aba quando isso acontecer.

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 um seletor ficar visível:
    • openclaw browser wait "#main"
Eles podem ser combinados:
openclaw browser wait "#main" \
  --url "**/dash" \
  --load networkidle \
  --fn "window.ready===true" \
  --timeout-ms 15000

Fluxos de trabalho de depuração

Quando uma ação falhar (por exemplo, “not visible”, “strict mode violation”, “covered”):
  1. openclaw browser snapshot --interactive
  2. Use click <ref> / type <ref> (prefira refs de função no modo interativo)
  3. Se ainda falhar: openclaw browser highlight <ref> para ver o que o Playwright está mirando
  4. Se a página se comportar de forma estranha:
    • openclaw browser errors --clear
    • openclaw browser requests --filter api --clear
  5. Para depuração profunda: grave um trace:
    • openclaw browser trace start
    • reproduza o problema
    • openclaw browser trace stop (imprime TRACE:<path>)

Saída JSON

--json é para scripts e ferramentas estruturadas. Exemplos:
openclaw browser status --json
openclaw browser snapshot --interactive --json
openclaw browser requests --filter api --json
openclaw browser cookies --json
Snapshots de função em JSON incluem refs mais um pequeno bloco stats (lines/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 de trabalho do tipo “fazer o site se comportar como X”:
  • Cookies: cookies, cookies set, cookies clear
  • Armazenamento: storage local|session get|set|clear
  • Offline: set offline on|off
  • Cabeçalhos: set headers --headers-json '{"X-Debug":"1"}' (o legado set headers --json '{"X-Debug":"1"}' continua compatível)
  • Autenticação básica HTTP: 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" (predefinições de dispositivo do Playwright)
    • set viewport 1280 720

Segurança e privacidade

  • O perfil do navegador openclaw pode conter sessões autenticadas; trate-o como sensível.
  • browser act kind=evaluate / openclaw browser evaluate e wait --fn executam JavaScript arbitrário no contexto da página. Injeção de prompt pode direcionar isso. Desative com browser.evaluateEnabled=false se você não precisar desse recurso.
  • Para logins e observações anti-bot (X/Twitter etc.), consulte Login no navegador + postagem no X/Twitter.
  • Mantenha o host Gateway/Node privado (loopback ou apenas tailnet).
  • Endpoints CDP remotos são poderosos; crie túneis e proteja-os.
Exemplo de modo estrito (bloquear destinos privados/internos por padrão):
{
  browser: {
    ssrfPolicy: {
      dangerouslyAllowPrivateNetwork: false,
      hostnameAllowlist: ["*.example.com", "example.com"],
      allowedHostnames: ["localhost"], // optional exact allow
    },
  },
}

Relacionados