openclaw browser
y de patrones de scripting (instantáneas, refs, esperas y flujos de depuración).
API de control (opcional)
Para integraciones solo locales, el Gateway expone una pequeña API HTTP loopback:- Estado/inicio/parada:
GET /,POST /start,POST /stop - Pestañas:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Instantánea/captura de pantalla:
GET /snapshot,POST /screenshot - Acciones:
POST /navigate,POST /act - Hooks:
POST /hooks/file-chooser,POST /hooks/dialog - Descargas:
POST /download,POST /wait/download - Depuración:
GET /console,POST /pdf - Depuración:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Red:
POST /response/body - Estado:
GET /cookies,POST /cookies/set,POST /cookies/clear - Estado:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Configuración:
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>.
Si la autenticación del gateway con secreto compartido está configurada, las rutas HTTP del navegador también requieren autenticación:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>o autenticación HTTP Basic con esa contraseña
- Esta API de navegador loopback independiente no consume encabezados de identidad de trusted-proxy ni de Tailscale Serve.
- Si
gateway.auth.modeesnoneotrusted-proxy, estas rutas loopback del navegador no heredan esos modos basados en identidad; mantenlas solo para loopback.
Contrato de errores de /act
POST /act usa una respuesta de error estructurada para fallos de validación y
de política a nivel de ruta:
code:
ACT_KIND_REQUIRED(HTTP 400): faltakindo no se reconoce.ACT_INVALID_REQUEST(HTTP 400): la carga útil de la acción no superó la normalización o validación.ACT_SELECTOR_UNSUPPORTED(HTTP 400): se usóselectorcon un tipo de acción no compatible.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(owait --fn) está desactivado por configuración.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdde nivel superior o por lotes entra en conflicto con el objetivo de la solicitud.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): la acción no es compatible con perfiles existing-session.
{ "error": "<message>" } sin campo code.
Requisito de Playwright
Algunas funciones (navigate/act/instantánea de IA/instantánea de rol, capturas de pantalla de elementos, PDF) requieren Playwright. Si Playwright no está instalado, esos endpoints devuelven un error 501 claro. Lo que sigue funcionando sin Playwright:- Instantáneas ARIA
- Capturas de pantalla de página para el navegador gestionado
openclawcuando hay disponible un WebSocket CDP por pestaña - Capturas de pantalla de página para perfiles
existing-session/ Chrome MCP - Capturas de pantalla basadas en ref (
--ref) enexisting-sessiona partir de la salida de instantánea
navigateact- Instantáneas de IA / instantáneas de rol
- Capturas de pantalla de elementos por selector CSS (
--element) - Exportación PDF completa del navegador
--full-page; la ruta devuelve fullPage is not supported for element screenshots.
Si ves Playwright is not available in this gateway build, repara las
dependencias de runtime del plugin incluido de navegador para que playwright-core esté instalado,
y luego reinicia el gateway. Para instalaciones empaquetadas, ejecuta openclaw doctor --fix.
Para Docker, instala también los binarios del navegador Chromium como se muestra más abajo.
Instalación de Playwright en Docker
Si tu Gateway se ejecuta en Docker, evitanpx playwright (conflictos de anulación de npm).
Usa la CLI incluida en su lugar:
PLAYWRIGHT_BROWSERS_PATH (por ejemplo,
/home/node/.cache/ms-playwright) y asegúrate de que /home/node se conserve mediante
OPENCLAW_HOME_VOLUME o un bind mount. Consulta Docker.
Cómo funciona (interno)
Un pequeño servidor local loopback de control acepta solicitudes HTTP y se conecta a navegadores basados en Chromium mediante CDP. Las acciones avanzadas (clic/escritura/instantánea/PDF) pasan por Playwright sobre CDP; cuando falta Playwright, solo están disponibles las operaciones que no dependen de Playwright. El agente ve una interfaz estable mientras los navegadores y perfiles locales/remotos se intercambian libremente por debajo.Referencia rápida de la CLI
Todos los comandos aceptan--browser-profile <name> para dirigirse a un perfil específico, y --json para salida legible por máquina.
Básicos: estado, pestañas, open/focus/close
Básicos: estado, pestañas, open/focus/close
Inspección: screenshot, snapshot, console, errors, requests
Inspección: screenshot, snapshot, console, errors, requests
Acciones: navigate, click, type, drag, wait, evaluate
Acciones: navigate, click, type, drag, wait, evaluate
Estado: cookies, storage, offline, headers, geo, device
Estado: cookies, storage, offline, headers, geo, device
uploadydialogson llamadas de preparación; ejecútalas antes del clic/press que active el selector o el diálogo.click/type/etc. requieren unarefdesnapshot(numérica12o de role12). Los selectores CSS no se admiten intencionadamente para acciones.- Las rutas de descarga, trazas y cargas están restringidas a las raíces temporales de OpenClaw:
/tmp/openclaw{,/downloads,/uploads}(alternativa:${os.tmpdir()}/openclaw/...). uploadtambién puede establecer entradas de archivo directamente mediante--input-refo--element.
--format ai(predeterminado con Playwright): instantánea de IA con refs numéricas (aria-ref="<n>").--format aria: árbol de accesibilidad, sin refs; solo inspección.--efficient(o--mode efficient): preajuste de instantánea compacta por rol. Establecebrowser.snapshotDefaults.mode: "efficient"para convertirlo en el predeterminado (consulta Configuración del Gateway).--interactive,--compact,--depth,--selectorfuerzan una instantánea por rol con refsref=e12.--frame "<iframe>"limita las instantáneas por rol a un iframe.--labelsañade una captura de pantalla solo de la ventana gráfica con etiquetas de ref superpuestas (imprimeMEDIA:<path>).
Instantáneas y refs
OpenClaw admite dos estilos de “instantánea”:-
Instantánea de IA (refs numéricas):
openclaw browser snapshot(predeterminada;--format ai)- Salida: una instantánea de texto que incluye refs numéricas.
- Acciones:
openclaw browser click 12,openclaw browser type 23 "hello". - Internamente, la ref se resuelve mediante
aria-refde Playwright.
-
Instantánea por rol (refs de rol como
e12):openclaw browser snapshot --interactive(o--compact,--depth,--selector,--frame)- Salida: una lista/árbol basado en roles con
[ref=e12](y opcionalmente[nth=1]). - Acciones:
openclaw browser click e12,openclaw browser highlight e12. - Internamente, la ref se resuelve mediante
getByRole(...)(másnth()para duplicados). - Añade
--labelspara incluir una captura de pantalla de la ventana gráfica con etiquetase12superpuestas.
- Salida: una lista/árbol basado en roles con
- Las refs no son estables entre navegaciones; si algo falla, vuelve a ejecutar
snapshoty usa una ref nueva. - Si la instantánea por rol se tomó con
--frame, las refs por rol quedan limitadas a ese iframe hasta la siguiente instantánea por rol.
Mejoras para wait
Puedes esperar a algo más que tiempo/texto:- Esperar a una URL (globs compatibles con Playwright):
openclaw browser wait --url "**/dash"
- Esperar a un estado de carga:
openclaw browser wait --load networkidle
- Esperar a un predicado JS:
openclaw browser wait --fn "window.ready===true"
- Esperar a que un selector se vuelva visible:
openclaw browser wait "#main"
Flujos de depuración
Cuando falle una acción (por ejemplo “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Usa
click <ref>/type <ref>(prefiere refs de rol en modo interactivo) - Si sigue fallando:
openclaw browser highlight <ref>para ver a qué apunta Playwright - Si la página se comporta de forma extraña:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Para depuración profunda: graba una traza:
openclaw browser trace start- reproduce el problema
openclaw browser trace stop(imprimeTRACE:<path>)
Salida JSON
--json es para scripting y herramientas estructuradas.
Ejemplos:
refs más un pequeño bloque stats (líneas/caracteres/refs/interactivo) para que las herramientas puedan razonar sobre el tamaño y la densidad de la carga útil.
Controles de estado y entorno
Son útiles para flujos de trabajo del tipo “haz que el sitio se comporte como X”:- Cookies:
cookies,cookies set,cookies clear - Almacenamiento:
storage local|session get|set|clear - Sin conexión:
set offline on|off - Encabezados:
set headers --headers-json '{"X-Debug":"1"}'(la forma heredadaset headers --json '{"X-Debug":"1"}'sigue siendo compatible) - Autenticación básica HTTP:
set credentials user pass(o--clear) - Geolocalización:
set geo <lat> <lon> --origin "https://example.com"(o--clear) - Media:
set media dark|light|no-preference|none - Zona horaria / configuración regional:
set timezone ...,set locale ... - Dispositivo / viewport:
set device "iPhone 14"(preajustes de dispositivo de Playwright)set viewport 1280 720
Seguridad y privacidad
- El perfil del navegador de openclaw puede contener sesiones iniciadas; trátalo como material sensible.
browser act kind=evaluate/openclaw browser evaluateywait --fnejecutan JavaScript arbitrario en el contexto de la página. La inyección de prompts puede dirigir esto. Desactívalo conbrowser.evaluateEnabled=falsesi no lo necesitas.- Para inicios de sesión y notas anti-bot (X/Twitter, etc.), consulta Inicio de sesión en navegador + publicación en X/Twitter.
- Mantén privado el Gateway/host de nodo (solo loopback o tailnet).
- Los endpoints CDP remotos son potentes; tunélalos y protégelos.
Relacionado
- Navegador — resumen, configuración, perfiles, seguridad
- Inicio de sesión en navegador — iniciar sesión en sitios
- Solución de problemas del navegador en Linux
- Solución de problemas del navegador en WSL2