AI 浏览器自动化怎么落地?我对比了 Browser Use、Playwright MCP、Stagehand,踩了 7 个坑
先说结论,别被 demo 骗了。上周三晚上 11 点,我在深圳出租屋用 Browser Use 跑一个 1688 供应商后台的报价抓取,任务只有 9 步:登录、搜索、筛选、翻 3 页、导出。结果跑到第 6 步,页面弹了个“滑动验证”,Agent 开始死循环,20 步 max_steps 烧完,OpenAI 账单多了 0.73 美元,数据一条没拿到。第二天我换成 Playwright 硬脚本 + Stagehand 做选择器修复,同样的任务 42 秒跑完,成本 0.09 美元。这个反差让我重新想一个问题:AI 浏览器自动化到底该用在哪?
先给判断:2025 年这个阶段,纯 Agent 适合 5 到 12 步、低风险、可回滚、页面结构稳定的任务;超过 15 步、涉及支付/发帖/删数据、验证码频繁的,别硬上。真正能落地的是“三层混合”:第一层用 Playwright/Puppeteer 写死主路径,占 70% 到 80%;第二层用 LLM 只处理异常恢复、选择器失效、非结构化字段抽取,占 15% 到 25%;第三层留人工兜底,占 5% 到 10%。我后来把报价抓取改成这个结构,成功率从 42% 拉到 91%,单任务 token 成本从 0.73 美元降到 0.11 美元,平均耗时从 3 分 10 秒降到 47 秒。纯 Agent 不是不能用,是不能当唯一方案。
四个工具拆开看:Browser Use、Playwright MCP、Stagehand、Skyvern
我按 6 个维度测:安装成本、定位策略、视觉能力、MCP 支持、并发/稳定性、许可证和费用。测试环境是 macOS 14.5、Node 20.11.1、Python 3.11.9、Chromium 125、屏幕 1440x900、locale zh-CN、timezone Asia/Shanghai,模型混用 gpt-4o 和 gpt-4o-mini。以下数字是我 2025 年 4 月自己跑出来的,不是官方 benchmark。
| 工具 | 语言/入口 | 定位策略 | 视觉 | MCP | 我的成功率 | 单任务成本 | 适合步数 |
|---|---|---|---|---|---|---|---|
| Browser Use | Python,pip install browser-use | DOM+截图+LLM 决策 | 支持 use_vision=True | 有社区 MCP | 58% | 0.31-0.73 美元 | 5-12 步 |
| Playwright MCP | Node,npx @playwright/mcp | accessibility tree + 角色定位 | 默认不截图 | 原生 MCP | 76% | 0.08-0.22 美元 | 3-10 步 |
| Stagehand | Node,npm i @browserbasehq/stagehand | act/extract/observe,混合定位 | 支持 | 可接 | 82% | 0.12-0.28 美元 | 5-15 步 |
| Skyvern | Docker+Python,AGPL-3.0 | 视觉+DOM+工作流 | 强视觉 | 有 API | 64% | 0.4-1.1 美元 | 8-20 步 |
Browser Use 的优势是代码短,30 行能跑,缺点是 LLM 每一步都在决策,长任务容易跑偏。我给它设 max_steps=20、timeout=30000ms、retry=2,还是会在弹窗和 iframe 上卡住。Playwright MCP 更像“给 Claude/Cline 装了一双手”,不是自主 Agent;它把页面 accessibility tree 喂给模型,准确率高,但你要在提示词里写清楚“点击角色为 button、名称为登录的节点”。Stagehand 的 act/extract/observe 三件套最像给前端工程师用的,extract 直接按 schema 出 JSON,我抓 20 条商品字段时比纯 DOM 解析省 60% 代码。Skyvern 视觉强,能处理复杂表单,但 Docker 镜像 2.3GB 起,跑 100 个任务内存吃到 4GB,AGPL-3.0 商用要小心。
从 0 跑通 Playwright MCP:我用的 7 个步骤和参数
如果你只想先跑起来,我建议从 Playwright MCP 开始,不要一上来就 Browser Use。步骤 1:装 Node 20.11+,npm i -g @playwright/mcp,然后 npx playwright install chromium。步骤 2:在 Claude Desktop 或 Cline 里加 MCP server,命令是 npx,参数是 -y @playwright/mcp@latest。步骤 3:重启客户端,看到浏览器工具列表再继续。步骤 4:给它第一个任务要窄,比如“打开 example.com,读取 h1 文本,输出 JSON”。步骤 5:提示词里加约束:不要点广告、不要登录、超时 15 秒、每步截图保存到 ./shots。步骤 6:跑 10 次,记录成功和失败步骤,失败最多的步骤改成硬编码。步骤 7:把 storage_state.json 存下来复用登录态,别每次重新扫码。
参数上,我固定 viewport 1440x900,deviceScaleFactor=1,locale zh-CN,timezoneId Asia/Shanghai,headless=False 前 3 次调试,稳定后改 True。超时别用默认 30 秒,抓取类 15000ms 够,表单提交 45000ms。重试 2 次,超过就截图报警。文件下载目录固定 ./downloads,下载前先 page.waitForEvent('download')。并发别超过 3,Chromium 每个上下文约 180-250MB 内存,16GB 机器跑 5 个就开始 swap。如果你用 gpt-4o-mini 做决策,每步 token 约 1200-2500,100 步任务成本约 0.05-0.12 美元;用 gpt-4o 会到 0.4-0.9 美元,差距 8 倍。
踩过的 7 个坑,以及我现在怎么绕
坑 1:登录态丢失。解决:Playwright 用 context.storageState({ path: 'auth.json' }),Browser Use 用 browser_context 复用 user_data_dir。坑 2:验证码。别指望 LLM 打码,接 2Captcha 或人工,成本约 0.5-1.5 美元/1000 次,延迟 10-30 秒。坑 3:动态 DOM。给关键节点加 data-testid,没有就自己注入,比让模型猜 class 稳 5 倍。坑 4:iframe。先 page.frames() 找 url 包含目标域名的 frame,再 locator,别在顶层瞎点。坑 5:反爬。控制频率,同一个域名请求间隔 800-1500ms,随机 200ms,UA 和时区一致。坑 6:成本失控。给 Agent 设 token 预算 8000/任务、max_steps 15,超了直接停。坑 7:无断言。每一步加 expect,比如 expect(page.locator('.price')).toContainText('¥'),失败就回滚,不要继续跑。
我现在最常用的结构是:main.py 里 80% 写 Playwright 硬路径,stagehand.act 只处理“如果出现新弹窗,点关闭”,extract 只处理“把页面表格转 JSON”。这样即使模型抽风,主流程也不会崩。数据落库前加 3 条校验:价格必须匹配人民币符号加数字,带两位小数;SKU 长度必须 8-14 位;库存必须是整数。校验不过的进人工队列。别小看这一步,它把脏数据率从 17% 压到 2.3%。
最后的独立观点:别买“全自动”,买“半自动省人”
如果你问我 2025 年 AI 浏览器自动化最大的误区是什么,我会说:把 Agent 当员工,而不是当实习生。实习生要你给 checklist、给权限边界、给回滚方案。纯 Agent 的 demo 很震撼,但生产环境里,稳定、可审计、成本可控比“全自动”值钱。我的建议是:先找一个每天重复 20 次以上、步骤 8-12 步、不碰钱不碰账号安全的流程,用 Playwright 写死,再用 Stagehand 或 Playwright MCP 补异常。跑两周,看成功率、单任务成本、人工介入次数这三个数。如果成功率低于 85%,先别扩,先改脚本和断言。
适合谁:电商运营抓竞品、SaaS 做回归测试、投研抓公开报表、HR 批量查公开信息。不适合谁:需要绕过强验证码、需要模拟真人社交、涉及支付和删除、法律灰产。最后一句,工具会变,Browser Use、Stagehand、Playwright MCP 都可能半年后换名字,但“主路径硬编码 + 异常 LLM 恢复 + 人工兜底”这个结构,我估计还能用很久。