🌐 浏览器自动化与沙箱¶
让 Agent "操作网页"是 2026 高频场景(自动填表、爬数据、E2E 测试、Web Agent)。但浏览器有巨大安全风险:模型操控的浏览器能访问你的登录态、能执行任意 JS。本页讲清 Playwright/Puppeteer 自动化 + 沙箱隔离,以官方能力为准。
依据:Playwright 官方("for testing, scripting, and AI agents")· 浏览器自动化安全实践。
📌 适用版本 / 更新日期:Playwright
1.4x;沙箱方案 E2B / Pyodide(均以官方为准);最后更新 2026-08。
1. 浏览器自动化能做什么¶
| 能力 | 工具 | 说明 |
|---|---|---|
| 驱动真实浏览器 | Playwright | 官方支持 Chromium/Firefox/WebKit,AI agents 场景一等公民 |
| 轻量 Chrome 驱动 | Puppeteer | 对 Chrome 优化,更轻 |
| 读取页面结构 | DOM 快照 / a11y tree | 给模型"看懂"页面,不传整页 HTML |
| 执行动作 | click / type / navigate | 模型决定下一步操作 |
给模型的是"视图"不是 HTML
把页面转成 accessibility tree / 精简 DOM 快照喂给模型,比塞整页 HTML 省 token 且更准。这是 Web Agent 的关键工程细节。
2. 最小 Playwright Agent 思路¶
import { chromium } from 'playwright'
const browser = await chromium.launch()
const page = await browser.newPage()
await page.goto('https://example.com')
// 取可访问性快照给模型决策
const snapshot = await page.accessibility.snapshot()
// 模型返回动作 {action:'click', selector:'#login'}
await page.click('#login')
3. 沙箱:为什么必须隔离¶
不隔离 = 灾难
Agent 操控的浏览器若在同一台机器、用你的登录态: - 模型被注入指令 → 删库 / 转钱 / 发敏感邮件。 - 页面里的恶意 JS 借 Agent 权限执行。 - 占用本机资源、污染环境。
原则:浏览器自动化必须跑在隔离沙箱里。
| 方案 | 说明 |
|---|---|
| 容器 / 函数计算沙箱 | 阿里云 FC 等一键部署隔离 Playwright 环境(社区实践) |
| E2B / 安全代码沙箱 | 专为 AI Agent 的代码/浏览器执行提供隔离运行时 |
| Pyodide / 浏览器内 WASM | 在浏览器内跑受限 Python/JS,不触本机 |
| 无头 + 网络隔离 | 禁公网 / 仅白名单域名,限制文件访问 |
沙箱选型要点
- 危险动作(写、删、发)走人工确认 + 白名单。
- 沙箱要无持久凭证:别把真实账号 token 注入沙箱浏览器。
- 网络出口白名单,防数据外泄。
4. 代码执行沙箱(让 Agent 跑代码)¶
除了浏览器,有时要 Agent 执行生成的代码(数据分析/计算)。同样要沙箱:
- 不可信代码绝不
eval/new Function在本进程。 - 用隔离运行时(容器 / WASM / 专用沙箱服务)执行,限资源、限系统调用、限网络。
- 超时强杀,防死循环。
代码执行铁律
模型生成的代码 = 不可信输入。直接 eval 执行 = 把服务器交给模型。必须沙箱 + 最小权限 + 资源限制。
5. 踩坑汇总¶
浏览器自动化高频坑
- 不隔离沙箱,用本机登录态跑 Agent(越权风险)。
- 把整页 HTML 喂模型,token 爆炸 + 噪音多。
- 动作后不等待加载完成就下一步 → 选择器失效(用 Playwright 自动等待)。
- 沙箱无网络白名单 → 数据泄露。
- 代码执行不沙箱 → 服务器被控。
衔接安全:AI 最佳实践-安全 · 工具执行:Function Calling