运行时依赖
安装命令
点击复制技能文档
远程浏览器服务 通过 HTTP API 为 AI 代理提供浏览器控制。支持基于 DOM 的自动化和远程桌面/VNC 控制,当您需要实际的帧缓冲区时。 索引 设置 核心工作流 API 参考 截图 VNC 接口 VNC 截图 对元素执行操作 VNC 操作 HTML 快照 令牌成本指南 环境变量 提示 设置 确保您有一个活动会话: 创建会话 —— POST /api/sessions(HTTP,无 WebSocket),或打开 WebSocket 到 /ws/{session_id}(DevTools CDP),或从 UI 运行。 可选 URL 在正文(HTTP)或查询(WS)中导航。 或恢复 —— 使用存储的会话从 GET /api/stored-sessions 身份验证 —— 传递 Authorization: Bearer 或 X-API-Key,或 ?access_token= 基础 URL:https://rb.all-completed.com(或 RBS_BASE_URL)。 在示例中替换 {session_id}。 从令牌中派生用户 ID。
核心工作流 导航到 URL 快照可访问性树(获取引用)—— GET .../json 对引用或选择器执行操作(点击、输入、填充、按压) 再次快照以查看结果 对于视觉或 OS 级别的流程,请使用 VNC 路径: 打开 VNC 接口 —— GET /users/{user_id}/vnc/{session_id},当您想要实时的 noVNC 视图时 捕获 VNC 帧缓冲区 —— GET .../vnc/screenshot 发送 VNC 输入 —— POST .../vnc/action,带有坐标或键 再次捕获以验证像素级结果 从 /json 的引用(e0、e1、...)可以与 /action 通过选择器一起使用(使用引用作为选择器,例如 e5 → “e5” 映射到角色/名称;目前使用 CSS 选择器)。
支持的操作按模式: 模式 类型 示例 DOM (/action) 点击 {"kind":"click","selector":"button.submit"} DOM (/action) 点击 {"kind":"tap","selector":"button.submit"} DOM (/action) 输入 {"kind":"type","selector":"#email","text":"user@example.com"} DOM (/action) 填充 {"kind":"fill","selector":"#email","text":"user@example.com"} DOM (/action) 按压 {"kind":"press","key":"Enter"} DOM (/action) 焦点 {"kind":"focus","selector":"input[name=search]"} DOM (/action) 悬停 {"kind":"hover","selector":"button.submit"} DOM (/action) 选择 {"kind":"select","selector":"select","value":"option-1"} DOM (/action) 滚动 {"kind":"scroll","scrollY":800} VNC (/vnc/action) 移动 {"kind":"move","x":320,"y":240} VNC (/vnc/action) 点击 {"kind":"click","x":320,"y":240,"button":"left","repeat":1} VNC (/vnc/action) 输入 {"kind":"type","text":"hello world"} VNC (/vnc/action) 按压 {"kind":"press","keys":["Ctrl","l"]} VNC (/vnc/action) 滚动 {"kind":"scroll","x":320,"y":240,"direction":"down","repeat":3}
API 参考 创建会话(HTTP) curl -X POST "https://rb.all-completed.com/api/sessions" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{}' # 可选:{"session_id": "my-session", "url": "https://example.com"} # 从存储的会话分叉:{"session_id": "my-fork", "from": "original-session"} # 临时(从元数据/分叉开始,但不保存):{"ephemeral": true} 闲置 5 分钟的会话将被关闭。 使用 POST .../ping 来保持活动。 每个用户最多允许 1 个并发会话。 如果创建返回 429 或 WebSocket 以限制错误关闭:等待一段时间(之前的会话可能仍在关闭),并/或在重试之前通过 DELETE /api/sessions/{session_id} 关闭之前的会话。
列出会话 curl "https://rb.all-completed.com/api/sessions" \ -H "Authorization: Bearer "
列出存储的会话 curl "https://rb.all-completed.com/api/stored-sessions" \ -H "Authorization: Bearer " 返回 {sessions: [...], count}。 通过 WebSocket 连接到 /ws/{session_id} 以恢复。
导航 curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/navigate" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' # 带有超时(秒) curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/navigate" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com", "timeout": 60}'
设置位置 # 覆盖页面的地理位置(例如,用于位置感知站点) curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/location" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"latitude": 37.7749, "longitude": -122.4194}' # 带有准确性(米) curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/location" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"latitude": 51.5074, "longitude": -0.1278, "accuracy": 50}'
图像(通过选择器下载) # 捕获单个元素(例如图像)通过 CSS 选择器 curl "https://rb.all-completed.com/api/sessions/{session_id}/image?selector=img.hero" \ -H "Authorization: Bearer " \ -o image.jpg # 带有质量,原始二进制(选择器 = #banner 为 id) curl "https://rb.all-completed.com/api/sessions/{session_id}/image?selector=img&quality=90&raw=true" \ -H "Authorization: Bearer " \ -o element.jpg 使用选择器(CSS)或引用(来自快照)。