浏览器自动化方案
AI 控制浏览器方案对比报告
任务:打开 https://www.deltalab.wiki/,点击博客页面,输出最新一篇文章的标题,生成可重复运行的固定脚本。
环境:Windows, Python 3.14.3, Node v24.15, Chrome 150/151, DeepSeek API
数据来源:claude -p --output-format json 返回的 num_turns 和 usage 字段。这是 Claude Code 官方提供的会话累计值。。
TL;DR
如果页面结构已知且稳定,直接写脚本最省。
如果必须 Agent 探索页面后再写脚本:
- 不在乎登录态 -> agent-browser(8 轮, 351,801)
- 必须带登录态 -> Open Browser Control(13 轮, 513,085)
如果只是让 Agent 读标题(不生成脚本),带上优化提示词:
- 带登录态 -> Open Browser Control(6 轮, 229,173)
不必考虑的: Browser Use / Stagehand(Python 3.14 不兼容)、Playwright CLI(比 MCP 还贵)、bsk(OBC/BMCP 更优)
核心教训:
- 提示词里写"不要用 click,读 href 后直接 navigate"省 40-60% token
- CLI 比 MCP 省 50%(agent-browser 8 轮 vs Playwright MCP 24 轮)
- 所有方案的
click在 SPA 页面都可能失败 - 快照格式越紧凑越好(aria 树 « DOM JSON)
一、无登录态 Chrome 方案
1. 脚本: Playwright 探路
提示词:
请在这个工作区中用 Python + Playwright 完成:
1) 编写固定脚本,用 Playwright 打开 https://www.deltalab.wiki/,点击博客页面,获取最新文章标题;
2) 脚本可重复运行,不依赖登录态或 cookie;
3) 用 C:\Python314\python.exe 运行脚本并验证输出。
不要使用 MCP,直接用 playwright.sync_api。
工作流:写临时探路脚本 _probe_deltalab.py -> 跑探路脚本读 DOM -> 写正式脚本 deltalab_latest_blog.py -> 跑脚本验证 -> 删临时文件
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 13 | 49,384 | 335,616 | 5,041 | 390,041 | $0.54 |
2. MCP: Playwright MCP
提示词:
请使用 Playwright MCP 完成:
1) browser_navigate 打开 https://www.deltalab.wiki/;
2) browser_snapshot 找博客链接;3) browser_click 点击博客;
4) browser_snapshot 读文章列表 DOM;
5) 生成独立 Python 脚本到 scripts/deltalab_latest_blog_mcp.py;
6) 运行脚本验证输出。
工作流:MCP 导航首页 -> snapshot 定位 [ref=e29] -> click 点击跳转 -> snapshot 文章列表 -> evaluate 验证 DOM -> Write 生成脚本 -> Bash 运行验证 -> browser_close
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 24 | 63,000 | 597,888 | 6,216 | 667,104 | $0.77 |
3. CLI: Playwright CLI + skill
提示词:
请使用 Playwright CLI 完成:
1) playwright-cli open https://www.deltalab.wiki/;
2) playwright-cli click 点击博客页面;
3) 读取最新文章标题;
4) 生成独立 Python 脚本到 scripts/deltalab_latest_blog_cli.py;
5) 运行验证输出。
工作流:加载 skill -> PowerShell playwright-cli open -> snapshot –filename=home.yml -> Read home.yml -> click e29 -> snapshot –filename=blog.yml -> Read blog.yml -> Write 脚本 -> PowerShell 运行验证
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 24 | 62,108 | 668,032 | 3,963 | 734,103 | $0.74 |
4. CLI: agent-browser
提示词:
用 agent-browser CLI 完成:
1) agent-browser open https://www.deltalab.wiki/;
2) agent-browser snapshot 找博客链接的 ref;
3) agent-browser navigate https://www.deltalab.wiki/post 直接跳(不用 click);
4) agent-browser snapshot 读文章列表 DOM;
5) 生成独立 Python 脚本到 scripts/deltalab_latest_blog_ab.py;
6) 输出标题。
工作流:确认 CLI 可用 -> agent-browser open 首页 -> snapshot [ref=e5] -> navigate 跳 /post -> snapshot 文章列表 -> Write 脚本 -> 输出标题
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 8 | 83,867 | 264,960 | 2,974 | 351,801 | $0.63 |
无登录态小结
| 方式 | 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|---|
| agent-browser | 8 | 83,867 | 264,960 | 2,974 | 351,801 | $0.63 |
| Playwright 探路 | 13 | 49,384 | 335,616 | 5,041 | 390,041 | $0.54 |
| Playwright MCP | 24 | 63,000 | 597,888 | 6,216 | 667,104 | $0.77 |
| Playwright CLI | 24 | 62,108 | 668,032 | 3,963 | 734,103 | $0.74 |
二、有登录态 Chrome 方案(Chrome 扩展)
1. browser-skill (bsk)
提示词:
请用 browser-skill 完成:
1) bsk session start; 2) bsk navigate https://www.deltalab.wiki/;
3) bsk snapshot 找博客 href;
4) bsk navigate 直接跳 /post (不用 click);
5) bsk snapshot 读文章列表;
6) 生成独立 Python 脚本到 scripts/deltalab_latest_blog_bsk.py;
7) bsk session stop; 8) 输出标题。
工作流:加载 skill -> bsk status -> session start -> navigate 首页 -> snapshot [ref=e5] -> evaluate 查 href -> navigate /post -> snapshot 文章列表 -> Write 脚本 -> session stop -> 输出标题
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 15 | 105,207 | 596,480 | 4,403 | 706,090 | $0.93 |
2. Open Browser Control
提示词:
任务:打开 https://www.deltalab.wiki/,点击博客页面,输出最新文章标题。
方式:用 Open Browser Control MCP 打开并读取页面内容,生成可重复运行的固定脚本。
步骤:1) browser_navigate 打开首页;2) browser_get_dom 找博客 href;
3) browser_navigate 直接跳博客(不要 click);4) browser_get_dom 读文章列表;
5) 生成独立 Python 脚本;6) 只输出标题。
工作流:WaitForMcpServers -> browser_navigate 首页 -> browser_get_dom 找博客 text+href -> browser_navigate 跳 /post -> browser_get_dom 文章列表 -> Write 脚本 -> 输出标题
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 13 | 63,898 | 444,288 | 4,899 | 513,085 | $0.66 |
3. Browser MCP
提示词:
用 Browser MCP 完成:
1) browser_navigate 打开 https://www.deltalab.wiki/;
2) browser_get_dom 找博客 href;
3) browser_navigate 直接跳博客;
4) browser_get_dom 读文章列表;
5) 生成独立 Python 脚本到 scripts/deltalab_latest_blog_bmcp.py;
6) 只输出标题。
工作流:WaitForMcpServers(3 次重试)-> browser_navigate 首页 -> browser_get_dom 找博客 -> browser_navigate /post -> browser_get_dom 文章列表 -> Write 脚本 -> 输出标题
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 14 | 80,807 | 471,808 | 6,821 | 559,436 | $0.81 |
有登录态小结
| 方式 | 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|---|
| Open Browser Control | 13 | 63,898 | 444,288 | 4,899 | 513,085 | $0.66 |
| Browser MCP | 14 | 80,807 | 471,808 | 6,821 | 559,436 | $0.81 |
| bsk | 15 | 105,207 | 596,480 | 4,403 | 706,090 | $0.93 |
三、AI 原生浏览器
BrowserOS neo
提示词:
用 BrowserOS MCP 完成:
1) name_session deltalab-blog;2) tabs action=new 打开新标签;
3) navigate url=https://www.deltalab.wiki/;4) snapshot 找博客链接 ref;
5) act 点击博客;6) snapshot 读最新文章标题;7) 只输出标题。
工作流:name_session -> tabs new -> navigate 首页(自动附带 snapshot)-> [ref=e4] -> act click(SPA 未跳转)-> snapshot 确认失败 -> tabs list 发现已有 /post 标签 -> read links 获取 URL -> navigate /post -> 文章列表 “唐杰关于个人发展的四个阶段”
| 轮数 | input | cache | output | 总 token | 费用 |
|---|---|---|---|---|---|
| 13 | 128,103 | 429,568 | 1,921 | 559,592 | $0.90 |
四、综合排名
全部方案(生成固定脚本)
| 分类 | 方式 | 轮数 | input | cache | output | 总 token | 费用 | 登录态 |
|---|---|---|---|---|---|---|---|---|
| 无登录态 | agent-browser | 8 | 83,867 | 264,960 | 2,974 | 351,801 | $0.63 | 无 |
| 无登录态 | Playwright 探路 | 13 | 49,384 | 335,616 | 5,041 | 390,041 | $0.54 | 无 |
| 有登录态 | Open Browser Control | 13 | 63,898 | 444,288 | 4,899 | 513,085 | $0.66 | 有 |
| 有登录态 | Browser MCP | 14 | 80,807 | 471,808 | 6,821 | 559,436 | $0.81 | 有 |
| AI 浏览器 | BrowserOS neo | 13 | 128,103 | 429,568 | 1,921 | 559,592 | $0.90 | 有 |
| 无登录态 | Playwright MCP | 24 | 63,000 | 597,888 | 6,216 | 667,104 | $0.77 | 无 |
| 有登录态 | bsk | 15 | 105,207 | 596,480 | 4,403 | 706,090 | $0.93 | 有 |
| 无登录态 | Playwright CLI | 24 | 62,108 | 668,032 | 3,963 | 734,103 | $0.74 | 无 |
优化提示词版(只要标题,不生成脚本)
| 方式 | 轮数 | input | cache | output | 总 token | 费用 | 登录态 |
|---|---|---|---|---|---|---|---|
| Open Browser Control | 6 | 55,987 | 172,416 | 770 | 229,173 | $0.39 | 有 |
| Browser MCP | 8 | 96,582 | 256,896 | 1,443 | 354,921 | $0.65 | 有 |
五、关键发现
1. click 在 SPA 页面是个通病
bsk、OBC、BMCP、BrowserOS 的 click 对本任务中的博客链接都无法触发跳转。Agent 普遍需要 3-5 轮额外往返来诊断并改用直接 navigate。提示词里写"不要用 click,读 href 后直接 navigate"是 40-60% token 节省的来源。
2. 快照格式决定 token 效率
DOM JSON 每元素 6-13 字段,aria 树 YAML 每元素 2-3 行。Browser MCP input 80K vs OBC 64K——多出来的 17K 主要来自冗余的 role、placeholder、value 空字段。agent-browser cache 只有 265K(全场最低),因为快照是纯 aria 树直出 stdout,不存文件、不重复读取。
3. CLI vs MCP
agent-browser 8 轮 vs Playwright MCP 24 轮。CLI 没有 WaitForMcpServers 连接等待、没有工具 schema 上下文、没有 JSON-RPC 返回格式膨胀。每多一个 MCP 服务器,Claude Code 每轮对话都要加载全套工具定义——这是 MCP 方案 cache read 偏高的主要原因。
4. Chrome 扩展 vs 独立浏览器
Chrome 扩展(bsk/OBC/BMCP)优势是零部署、实时登录态,但 click 兼容性依赖扩展适配。BrowserOS 是独立 Chromium fork,工具最全(53+ 工具 + 40+ App 集成),但 MCP 工具 schema 直接打进 LLM 上下文,input 128K 全场最高。简单任务性价比不高,价值在需要真实登录态的多步联动。
5. 未来展望
AI 控制浏览器分化三条线:
Agent 工具链(MCP/CLI)——Playwright MCP、agent-browser、OBC。核心是让 Agent 像人一样看页面、做操作。这条路会继续优化快照格式、减少工具 schema 膨胀。
AI 原生浏览器(BrowserOS)——Agent 嵌入浏览器内核。当前 token 开销大,但长期可能是终局:Agent 不再通过 MCP 远程操控,而是在浏览器内部直接执行。
自闭环优化——这是未解决的核心矛盾:Agent 每次探索页面都要把整页 DOM 喂给 LLM。如果 AI 浏览器能缓存 Agent 探索过的页面结构(类似人浏览网页的记忆),就不需要每次全量传输。这是下一步 token 优化的最大空间。