Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Browser Run:为你的 agent 配上一个浏览器

原文:Browser Run: give your agents a browser Source: https://blog.cloudflare.com/browser-run-for-ai-agents/

2026-04-15

AI agent 需要与 Web 交互。要做到这点,它们需要一个浏览器。它们要导航站点、读取页面、填写表单、提取数据、截屏。它们需要观察事情是否按预期工作,并在需要时让人能介入。所有这些都要在大规模下完成。

今天,我们将 Browser Rendering 重命名为 Browser Run,并发布若干关键功能,使其成为面向 AI agent 浏览器。Browser Rendering 这个名字从未真正涵盖该产品的能力。Browser Run 让你在 Cloudflare 全球网络上运行完整的浏览器会话,用代码或 AI 驱动它们,录制并回放会话,爬取页面内容,实时调试,并在 agent 需要帮助时让人介入。

新东西如下:

  • Live View:实时看到你的 agent 看到与正在做的事。瞬间知道事情是否在工作,出错时立即看到原因。

  • Human in the Loop:当 agent 撞上登录页或意外边界情况时,可以交给人类而不是失败。人介入解决,然后交还控制权。

  • Chrome DevTools Protocol(CDP)端点:Chrome DevTools Protocol 是 agent 控制浏览器的方式。Browser Run 现在直接暴露它,让 agent 对浏览器有最大控制权,且现有 CDP 脚本可在 Cloudflare 上运行。

  • MCP Client 支持: 像 Claude Desktop、Cursor、OpenCode 这样的 AI 编码 agent 现在可以把 Browser Run 当作其远程浏览器。

  • WebMCP 支持:Web 上 agent 数量将超过人类。WebMCP 让网站声明 agent 可发现并调用的动作,使导航更可靠。

  • Session Recordings:为调试目的捕获每个浏览器会话。出问题时,你拥有完整录制,包括 DOM 变化、用户交互与页面导航。

  • 更高限额:并发浏览器从 30 提升到 120,可同时运行更多任务。

一个 AI agent 在 Google Hotels 上搜索京都最新住宿价格

Agent 所需的一切

让我们想想 agent 浏览 Web 时需要什么,以及每项功能如何契合:

agent 需要什么 Browser Run(原 Browser Rendering)
1) 按需的浏览器 在 Cloudflare 全球网络上的 Chrome 浏览器
2) 控制浏览器的方式 用 Puppeteer、Playwright、CDP(新)MCP Client 支持(新)WebMCP(新),执行导航、点击、填表、截屏等动作
3) 可观测性 Live View(新)Session Recordings(新)仪表盘改版(新)
4) 人工干预 Human in the Loop(新)
5) 规模 Quick Actions 10 请求/秒,120 并发浏览器(提升 4 倍)

1) 打开浏览器

首先,agent 需要一个浏览器。借助 Browser Run,agent 可以按需在 Cloudflare 全球网络上启动一个无界面 Chrome 实例。无需管理基础设施,无需维护 Chrome 版本。浏览器会话在用户附近开启以获得低延迟,并按需扩缩。把 Browser Run 与 Agents SDK 配对,构建能浏览 Web、记住一切并自主行动的长期运行 agent。

2) 执行动作

Agent 拿到浏览器后,需要方法去控制。Browser Run 支持多种方式:除了已有的基于 PuppeteerPlaywright 的高层自动化以及面向简单任务的 Quick Actions 之外,新增了通过 Chrome DevTools Protocol(CDP)与 WebMCP 的低层协议访问。下面看看细节。

Chrome DevTools Protocol(CDP)端点

Chrome DevTools Protocol(CDP) 是支撑浏览器自动化的低层协议。直接暴露 CDP 意味着不断壮大的 agent 工具生态以及现有的 CDP 自动化脚本都能使用 Browser Run。当你打开 Chrome DevTools 检查页面时,底层运行的就是 CDP。Puppeteer、Playwright 与大多数 agent 框架都构建在它之上。

你之前使用 Browser Run 的每种方式实际上都已通过 CDP 进行。新的是,我们现在 直接暴露 CDP 作为端点。这对 agent 很重要,因为 CDP 给予 agent 对浏览器最大可能的控制权。Agent 框架本就原生使用 CDP,现在可以直接连接到 Browser Run。CDP 还解锁了 Puppeteer 或 Playwright 不可用的浏览器动作,比如 JavaScript 调试。而且因为你直接处理原始 CDP 消息而非通过更高层库,你可以把消息直接传给模型,实现更省 token 的浏览器控制。

如果你已有针对自托管 Chrome 的 CDP 自动化脚本,只需一行配置变更即可在 Browser Run 上运行。把 WebSocket URL 指向 Browser Run,从此不再管理你自己的浏览器基础设施。

// Before: connecting to self-hosted Chrome
const browser = await puppeteer.connect({
  browserWSEndpoint: 'ws://localhost:9222/devtools/browser'
});

// After: connecting to Browser Run
const browser = await puppeteer.connect({
  browserWSEndpoint: 'wss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-rendering/devtools/browser',
  headers: { 'Authorization': 'Bearer <API_TOKEN>' }
});

CDP 端点也让 Browser Run 更易访问。你现在可以从任何语言、任何环境连接,无需写 Cloudflare Worker。(如果你已经在用 Workers,什么都不变。)

在 MCP Client 中使用 Browser Run

由于 Browser Run 现在暴露 Chrome DevTools Protocol(CDP),Claude Desktop、Cursor、Codex 与 OpenCode 等 MCP 客户端都可以把 Browser Run 当作其远程浏览器。来自 Chrome DevTools 团队的 chrome-devtools-mcp 包 是一个 MCP server,让你的 AI 编码助手获得 Chrome DevTools 的完整能力,用于可靠自动化、深入调试与性能分析。

下面是为 Claude Desktop 配置 Browser Run 的示例:

{
  "mcpServers": {
    "browser-rendering": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@latest",
        "--wsEndpoint=wss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-rendering/devtools/browser?keep_alive=600000",
        "--wsHeaders={\"Authorization\":\"Bearer <API_TOKEN>\"}"
      ]
    }
  }
}

其他 MCP 客户端,见 Browser Run 与 MCP 客户端搭配使用文档

WebMCP 支持

互联网是为人类构建的,所以今天 AI agent 的导航并不可靠。我们押注一个未来:使用 Web 的 agent 多于人类。在那个世界里,站点需要对 agent 友好。

这就是为什么我们正推出对 WebMCP 的支持 — 这是来自 Google Chrome 团队、已落地于 Chromium 146+ 的新浏览器 API。WebMCP 让网站直接向 AI agent 暴露工具,声明每个页面上 agent 可发现并调用的动作。这帮助 agent 更可靠地浏览 Web。Agent 不再需要自行琢磨如何使用某个站点,网站可以暴露其工具供 agent 发现并调用。

支撑这一切的是两个 API:

  • navigator.modelContext 让网站注册其工具

  • navigator.modelContextTesting 让 agent 发现并执行这些工具

今天,造访旅游预订站点的 agent 必须靠看 UI 才能弄懂。有了 WebMCP,该站可以声明:“这里有一个 search_flights 工具,接受出发地、目的地和日期。“Agent 直接调用,无需在缓慢的截屏-分析-点击循环中循环。无论 UI 是否变化,导航都更可靠。

工具是在页面上发现的,而不是预加载的。这对 Web 长尾很重要,因为为每个可能的站点预加载 MCP server 既不可行也会使上下文窗口膨胀。

在 Chrome DevTools 控制台用 WebMCP 预订酒店,通过 listTools() 发现可用工具

我们有一个实验池,实例运行 Chrome beta,你可以在功能进入稳定 Chrome 之前测试新兴浏览器特性。我们还刚刚发布了 Wrangler 浏览器命令,让你直接从 CLI 管理浏览器会话,创建、管理与查看浏览器会话都可在终端完成。要 访问启用 WebMCP 的浏览器,使用以下 Wrangler 命令在实验池中创建会话:

npm i -g wrangler@latest
wrangler browser create --lab --keepAlive 300  

使用 Browser Run 的现有方式

虽然 CDP 与 WebMCP 是新的,你之前已经可以通过 Browser Run 使用 PuppeteerPlaywrightStagehand 进行完整浏览器自动化。对于 截屏生成 PDF提取 markdown 等简单任务,有 Quick Action 端点

/crawl 端点 — 爬取 Web 内容

我们最近还发布了一个 /crawl 端点,让你只需一次 API 调用就能爬取整个站点。给它一个起始 URL,页面会被自动发现并抓取,然后以你偏好的格式(HTML、Markdown、结构化 JSON)返回,并可通过额外参数控制爬取深度与范围、跳过未变化的页面以及指定要包含或排除的特定路径。

我们有意把 /crawl 设计为 行为良好的爬虫。这意味着开箱即尊重站点拥有者的偏好,是一个 signed agent,拥有用 Web Bot Auth 加密签名的独立 bot ID,具有不可定制的 User-Agent,并遵循 robots.txt 与 AI Crawl Control。它不会绕过 Cloudflare 的 bot 防护或 CAPTCHA。站点拥有者决定其内容是否可被访问,/crawl 尊重这一点。

# Initiate a crawl
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-rendering/crawl' \
  -H 'Authorization: Bearer <apiToken>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://blog.cloudflare.com/"
  }'

3) 观察

事情第一次未必都成功。我们不断听到客户反馈,自动化失败时他们不知道为什么。所以我们增加了多种方式来观察发生了什么,无论实时还是事后,都能精确看到 agent 看到的内容。

Live View

Live View 让你实时观看 agent 的浏览器会话。无论你是在调试 agent 还是运行长时间自动化脚本,你都能即时看到正在发生的事情,包括页面本身以及 DOM、控制台与网络请求。当出问题时 — 预期按钮不在、页面需要认证或出现 CAPTCHA — 你能立即捕获。

访问 Live View 有两种方式。从代码中,获取要检查的浏览器的 session_id,在 Chrome 中打开响应中的 devtoolsFrontendURL。或从 Cloudflare 仪表盘,打开 Browser Run 部分新的 Live Sessions 页签,点击进入任意活动会话。

AI agent 预订酒店的 Live View,展示实时浏览器活动

Session Recordings

Live View 在你有空时很好,但你无法盯着每个会话。Session Recordings 把 DOM 变化、鼠标与键盘事件以及页面导航以结构化 JSON 捕获,会话结束后可以回放任意会话。

启动浏览器时传入 recording:true 即可启用 Session Recordings。会话关闭后,你可以在 Cloudflare 仪表盘的 Runs 页签中访问录制,或通过 API 检索录制并用 rrweb-player 回放。下一步,我们将增加在录制的任意时点检查 DOM 状态与控制台输出的能力。

回放浏览器自动化的会话录制:浏览 Sentry Shop 并把一件 bomber jacket 加入购物车

仪表盘改版

之前,Browser Run 仪表盘 只显示浏览器会话日志。截屏、PDF、markdown 与 crawl 的请求都不可见。改版后的仪表盘改变了这一点。新的 Runs 页签显示每一个请求。你可以按端点过滤并查看包括目标 URL、状态与持续时间在内的详情。

Browser Run 仪表盘 Runs 页签在单一视图中展示浏览器会话与 PDF、Screenshot、Crawl 等 quick action,展开一个 crawl 任务以查看其进度

4) 干预

Agent 很好,但并不完美。有时它们需要让人介入。Browser Run 支持 Human in the Loop 工作流,人可以接管一个活动浏览器会话,处理自动化无法处理的事情,然后让会话继续。

Human in the Loop

当自动化撞墙时,你不必从头来过。借助 Human in the Loop,你可以介入并直接与页面交互,点击、输入、导航、输入凭证或提交表单。这解锁了 agent 无法处理的工作流。

今天,你可以通过为任意活动会话打开 Live View URL 介入。下一步,我们将增加交接流程,agent 能在需要帮助时发出信号,通知人介入,问题解决后再把控制交还给 agent。

AI agent 在 Amazon 上搜索橙色 lava lamp,比较选项,在需要登录完成购买时交给人

5) 规模

客户希望我们提高限额,以便他们能更多更快地完成工作。

更高限额

我们把 默认并发浏览器限额从 30 提升到 120,提升了 4 倍。每个会话都让你立刻从全球暖实例池中获得一个浏览器,无须冷启动等待。我们在 3 月还把 Quick Actions 限额提升 到每秒 10 个请求。如有更高限额需求,可以申请。

接下来

  • Human in the Loop Handoff:今天你可以通过 Live View 介入浏览器会话。很快,agent 将能在需要帮助时发出信号,你可以构建通知,提醒人介入。

  • Session Recordings 检查:你已经可以拖动时间轴并回放任意会话。很快,你也能检查 DOM 状态与控制台输出。

  • Traces 与 Browser Logs:无需在你的代码里埋点就能访问调试信息。控制台日志、网络请求、计时数据。如果出错,你会知道在哪。

  • 直接从 Workers 获取 Screenshot、PDF 与 markdown:REST API 中的同款简单任务正在到来 Workers Bindingsenv.BROWSER.screenshot() 直接可用,无需 API token。

开始使用

Browser Run 今天在 Workers Free 与 Workers Paid 计划上都可用。我们今天发布的一切 — Live View、Human in the Loop、Session Recordings 与更高并发限额 — 都已可用。

如果你之前在用 Browser Rendering,一切照常工作,只是换了名字并多了功能。

查看 文档 开始使用。