browser-js 综合评估
browser-js 是一个专为 AI Agent 设计的轻量级浏览器控制工具,通过 Chrome DevTools Protocol (CDP) 与 Chromium 浏览器通信,提供极简、索引化的页面交互能力。
核心用法
工具通过命令行接口提供完整浏览器自动化能力:
- 页面导航:
open <url>、back、forward、refresh - 元素发现:
elements [selector]扫描可交互元素并生成编号列表 - 交互操作:
click <index>、type <index> <text>、支持真实的鼠标事件触发 - 内容提取:
text(页面文本,8KB 上限)、html <selector>(元素 HTML,10KB 上限)、eval <js>(执行任意 JavaScript) - 文件上传:
upload <path> [selector]通过 CDP 直接注入文件,绕过系统对话框 - 截图与滚动:
screenshot [path]、scroll <direction> [px]
关键特性包括自动索引系统——elements 命令返回紧凑编号列表如 [3] (button) Submit,后续 click 3 即可精准操作;Shadow DOM 原生支持——递归穿透 web components,兼容 Reddit、GitHub 等现代 SPA;真实鼠标事件——使用 CDP dispatchMouseEvent 而非 JS .click(),可靠触发 React/Vue/Angular 合成事件。
显著优点
1. 极致 Token 效率:单次交互约 50-200 tokens,相比传统浏览器工具的 accessibility tree 快照(2,000-5,000 tokens)节省 3-10 倍,10 步流程可节省数万 tokens
2. 现代 Web 兼容:原生 Shadow DOM 穿透、SPA 框架事件支持,解决传统工具在现代站点的失效问题
3. 会话连续性:复用已登录浏览器实例,自动携带 cookies 和登录状态
4. 文件上传便利:绕过 OS 文件选择器,直接注入文件到隐藏 input 元素
5. 零配置开箱:OpenClaw 环境预配置,或手动启动 Chrome 即可使用
潜在局限
1. 依赖本地 Chrome:必须维持 Chromium 进程运行,无法在无浏览器环境使用
2. 单一实例限制:默认连接本地 18800 端口,多实例并发需额外配置
3. 内容截断:text 8KB、html 10KB 上限,大型页面需配合 eval 自定义提取
4. 无视觉理解:纯文本/索引输出,页面结构理解依赖 Agent 推理,复杂布局可能需截图辅助
5. 安全边界:eval 命令可执行任意 JavaScript,需信任调用方;upload 命令可访问本地文件系统
适合人群
- 需要高频浏览器交互的 AI Agent 工作流(如批量数据抓取、表单自动化)
- 处理现代 Web 应用(React/Vue/Angular、Shadow DOM)的自动化场景
- Token 预算敏感的长流程任务
- 已有 Chrome/CDP 基础设施的开发者
常规风险
| 风险类别 | 说明 | 缓解措施 |
|---------|------|---------|
| 命令注入 | `eval` 执行任意 JS,`open` 可能访问恶意 URL | 仅用于可信站点,输入 URL 需校验 |
| 文件系统访问 | `upload` 读取本地文件,`screenshot` 写入文件 | 在沙箱环境运行,限制文件路径 |
| 浏览器安全 | 复用用户会话可能暴露敏感信息 | 使用隔离的 user-data-dir,避免登录敏感账户 |
| 网络暴露 | CDP 端口若对外开放可被远程利用 | 绑定 127.0.0.1,勿暴露公网 |
| 依赖风险 | npm 依赖供应链攻击 | 锁定版本,审计 scripts/package.json |
来源可信度
纯社区开源工具,无商业背书。代码透明可审计,但安全报告为系统占位生成,未执行实际扫描。建议生产使用前进行依赖审计和沙箱隔离。