浏览器 API
aiod 连接已经启动的 Chromium,不负责启动浏览器。默认连接 127.0.0.1:9222;如果 Chromium 在其他地址,请设置 BROWSER_REMOTE_DEBUGGING_HOST 和 BROWSER_REMOTE_DEBUGGING_PORT。
可以使用 Playwright、Puppeteer 等 CDP 客户端,也可以直接调用 REST API。/v1/browser/* 和 /v2/browser/* 的请求体相同;桌面操作除外:v1 使用 POST /v1/browser/actions,v2 使用 /v2/computer。详见 Computer Use。
其他已移除的 1.x 路由见 已移除的路由。
运行要求
GET /v2/sandbox 返回 capabilities.browser:
GET /v1/capabilities 返回 browser.status:
不是 ready 时,其余工具不可用。见 Sandbox。
获取 CDP URL
info 返回 CDP 客户端要连接的地址:
cdp_url—— CDP 客户端要连接的 WebSocket 地址cdp_ui_url—— 内置的 DevTools 页面,没有提供时为null
通过反向代理访问时,cdp_url 会使用对外地址。Chromium 暂时不可用时,恢复后重新调用 info。
详细配置见 CDP 接入。
需要使用 Playwright 或 Puppeteer 时,先调用 info 获取 cdp_url,再将它传给客户端。完整示例见 浏览器(CDP)。
REST 接口
不需要完整 CDP 客户端的操作,aiod 提供一套精简 REST。除注明外均为 POST,返回结构都是标准的 {success, message, data}。完整的请求/响应结构见 API 参考。
这些工具挂在 /v2/browser 下:
这些工具挂在 /v1/browser 下:
navigate、evaluate、snapshot、click、fill、upload 和 cdp 都可以通过 tab_id 指定标签页。
不传 tab_id 时,操作默认作用于列表中的第一个标签页。新打开的标签页,无论由 tabs 还是页面自身打开,都会排在最前面。
screenshot 不支持 tab_id,始终截取列表中的第一个标签页。见 标签页。
导航与脚本执行
1.x SDK 没有对应这两个路由的方法,请直接调用它们。
请求体示例(v1 和 v2 相同):
navigate:
evaluate:
wait_until可选load、domcontentloaded、networkidle、commit,默认是load。timeout默认 30 秒;超时返回503,标签页仍可继续使用。history可取back、forward或reload。evaluate的结果在data.value中,JavaScript 异常在data.exception中,HTTP 状态仍为200。
截图
响应体就是图片:
format 可选 png(默认)、jpeg 或 jpg;quality 取值 0–100,只对 jpeg 生效,默认 85。
full_page=true 截取整个可滚动页面,而不只是视口。PNG 响应还会带上 x-image-width 和 x-image-height。
页面快照
调用 snapshot 获取页面结构,再用返回的 ref 操作元素:
interactive_only 只保留可操作的元素。click、fill 和 upload 也可以使用 CSS selector。每次导航后都要重新获取快照,旧的 ref 不再有效。
标签页
标签页对应 Chromium 的页面。
新标签页会成为默认目标。需要固定操作对象时,传入 tab_id;不传时,操作列表中的第一个标签页。
POST tabs 不传 url 时打开 about:blank。screenshot 不支持 tab_id,始终截取第一个标签页。
Cookie
cookie 的读写使用 CDP 定义的结构:
设置 cookie 时必须提供 name,以及 url 或 domain 和 path。其他 CDP 字段可选;读取接口返回 Chromium 当前保存的值。
请求日志
GET network/requests 返回页面请求的只读日志,从第一次调用后开始收集,最多保留最近 300 条。limit 限制返回条数,clear=true 在读取后清空;该接口不支持请求拦截或请求头改写。
窗口大小
POST config 通过 CDP 调整浏览器窗口大小。
resolution 必须使用支持的尺寸;其他组合返回 422。不传 resolution 时不修改窗口。
原始 CDP 命令
POST cdp 发送一条原始 CDP 命令,并将结果放在 data 中。REST API 未覆盖的能力可以使用该入口;需要连续发送多条命令时,建议直接建立 CDP 连接。
错误处理
JavaScript 异常不属于 HTTP 错误:evaluate 仍返回 200,异常放在 data.exception 中。
桌面操作
这不是页面级操作,而是真实的鼠标和键盘事件。请求会转发给 computer-use worker;worker 未运行时返回 503。
调用 POST /v2/computer/actions。详见 Computer Use。
调用 POST /v1/browser/actions。详见 Computer Use。
MCP 工具
支持 MCP 的 agent 可以通过 /mcp 调用浏览器工具。AIO 镜像还会提供页面级的 browser_* 工具;裸 daemon 只提供基础浏览器工具。
选择调用方式
三种入口操作的是同一个 Chromium:
需要完整的页面自动化时使用 CDP;只做常用操作时直接调用 REST API;已经接入 MCP 的 agent 可以使用 MCP。
Human in the loop
人可以直接查看或接管 agent 正在操作的 Chromium。两种查看方式连接的是同一个浏览器环境:
noVNC 连接的是整个桌面,而不是单独的浏览器窗口。因此可以操作文件选择框、地址栏和其他应用窗口。即使 Chromium 重启,桌面仍会保留。noVNC 页面也可以嵌入 iframe。
人和 agent 共享同一个浏览器状态。例如,在 noVNC 中完成登录后,agent 下一次调用 snapshot 就能看到登录后的页面。
daemon 只提供 API;noVNC 和 DevTools 页面由镜像网关提供。部署和访问方式见 Computer Use。