AI 浏览器控制领域有两个主要 protocol:CDP(Chrome DevTools Protocol)和 MCP(Model Context Protocol)。它们在不同层解决不同问题,但构建 browser agent 的开发者经常把两者混淆,或者选错了。本指南解析每个 protocol 的作用、各自的适用场景,以及它们在生产 agent 技术栈中如何配合使用。
结论先行: CDP 通过 WebSocket 连接对 browser 进行直接的底层控制。MCP 通过标准化的 tool-use 接口为 LLM 提供高层 browser tools。CDP 是引擎,MCP 是方向盘。大多数生产环境的 AI agent 两者都需要:MCP 让 LLM 决定 action,CDP 在底层让 browser 真正运转。Clawbrowser 原生支持两者。
说明: 本文中的 "CDP" 指 Chrome DevTools Protocol(浏览器控制标准)。
CDP 和 MCP 到底是什么
CDP:Chrome DevTools Protocol
CDP 是基于 WebSocket 的 protocol,用于以编程方式控制 Chromium browser。Google 最初为 Chrome DevTools(按 F12 打开的 inspector)开发了它,但它已成为 browser 自动化的标准。Playwright、Puppeteer 以及所有主流自动化库都在内部使用 CDP。
在 Playwright 中调用 page.goto() 时,它通过 WebSocket 向 browser 发送 CDP 命令。CDP 提供精细控制:页面导航、JavaScript 执行、network request 拦截、cookie 操作和截图。
# CDP: your code controls the browser directly
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp("http://127.0.0.1:9222")CDP 深入解读见 AI Agents 开发者指南的 CDP 浏览器。
MCP:Model Context Protocol
MCP 是一个标准化 LLM 与外部工具连接方式的 protocol。无需为每个工具编写自定义 function-call 定义,LLM 通过 MCP 服务器发现可用工具并以标准接口调用。
对于 browser 控制,MCP 服务器将 navigate、click、type、screenshot、extract 等 action 公开为 LLM 可调用的工具。LLM 根据任务决定调用哪个工具。不需要 Playwright 代码、CSS 选择器或 agent 中的自定义工具定义。
{
"mcpServers": {
"clawbrowser": {
"command": "clawctl",
"args": ["mcp", "serve"]把这段配置加到 Claude Code、Cursor、Gemini CLI 或任何 MCP 兼容 agent 中,LLM 就能立即使用 browser tools。
为什么容易混淆
两个 protocol 都把 AI agent 连接到 browser。都包含 "protocol" 这个词。都出现在关于 AI agent 基础设施的讨论中。但它们工作在不同层:
- CDP 是 browser 级 protocol,与 Chromium 通信。
- MCP 是应用级 protocol,与 LLM 通信。
MCP browser 服务器在内部使用 CDP 来控制 browser。它们不是替代关系,而是同一技术栈中的不同层。
并排对比
| CDP (Chrome DevTools Protocol) | MCP (Model Context Protocol) | |
|---|---|---|
| 开发方 | Google(Chrome 团队) | Anthropic |
| Protocol 类型 | 浏览器控制(WebSocket) | 工具调用(stdio/SSE) |
| 调用方 | 代码(Playwright、Puppeteer、raw WebSocket) | LLM(Claude、GPT、Gemini) |
| 控制层级 | 底层:DOM、network、JavaScript 执行、cookies | 高层:navigate、click、type、screenshot、extract |
| 配置方式 | 连接 browser 的 debugging port | 在 agent 中配置 MCP 服务器 |
| 灵活性 | 完全:browser 能做的一切 | 受限于服务器公开的工具 |
| 单次 action 速度 | 毫秒级(无 inference) | 0.5~3 秒(LLM 每步判断) |
| 错误处理 | 代码处理错误 | LLM 推理错误 |
| Anti-detection | 不内置(取决于 browser) | 不内置(取决于 browser) |
| 最佳用途 | 脚本自动化、细粒度控制、framework 开发 | LLM 驱动浏览、开放式任务、快速原型 |
两个 protocol 都不处理 anti-detection。这是 browser 层面的问题,不是 protocol 的问题。一个普通 Chrome instance 不论通过 CDP 还是 MCP 服务器连接,都会暴露相同的自动化信号。anti-detection 需要 Clawbrowser 这样的 engine 级解决方案:覆盖 20 多个 surface 的 managed fingerprints、内置 proxy routing、Chromium 源码级的 CDP signal 压制。
何时用 CDP
当你需要对 browser 进行精确的编程控制,而且事先知道确切步骤时,用 CDP。
CDP 占优的场景:
- 结构化抓取。 你知道要定位哪些选择器、提取什么数据、如何处理分页。代码每次执行相同步骤。
- Network 拦截。 需要屏蔽资源、修改 request 头、捕获 API response,或在页面加载前注入 JavaScript。
- 复杂等待条件。 需要等待特定 DOM 元素、network idle 状态或 JavaScript 变量变化后再操作。
- 性能敏感的自动化。 CDP 命令毫秒级执行,没有 LLM inference 延迟。通过 CDP 几秒钟完成的 50 步抓取任务,经 LLM 逐步推理要花几分钟。
- Framework 开发。 你在构建 agent framework、测试工具或别人要用的自动化库。
# CDP: full control, full responsibility
await page.wait_for_selector("#login-form")
await page.fill("#email", "[email protected]")
await page.fill("#password", credentials)
await page.click("#submit")代价: 你要自己编写和维护全部 browser 胶水代码。每个选择器、每个等待条件、每个错误处理。目标页面结构一变,代码就会出错。
何时用 MCP
当 LLM 应该根据页面内容决定下一步做什么时,用 MCP。
MCP 占优的场景:
- 开放式浏览。 "找到价格页面并提取套餐详情。" agent 自行导航、阅读页面、在没有硬编码选择器的情况下决定点什么。
- 需要判断的多步骤工作流。 "登录,检查是否有新账单,如果金额超过 500 美元就下载。" LLM 在每一步读取页面内容并处理条件逻辑。
- 快速原型。 不写 Playwright 代码,五分钟内启动一个 browser agent。添加 MCP 配置,描述任务即可。
- 非开发者用户。 agent 操作者用自然语言描述任务,不需要写代码。
- Agent 原生环境。 Claude Code、Cursor 和 Gemini CLI 已原生支持 MCP,添加 browser 只需一个配置块。
# MCP: the LLM decides what to do
User prompt: "Go to example.com and tell me the page title"
LLM calls: navigate(url="https://example.com")
LLM calls: screenshot()代价: 精度降低。LLM 可能点错元素、多走步骤或误读页面内容。每个 action 都有 LLM inference 延迟。标准 MCP browser tools 无法拦截 network request 或注入 JavaScript。
何时两者一起用
这是大多数生产环境 AI agent 最终采用的方式。MCP 负责 LLM-to-agent 接口,CDP 负责 agent-to-browser 接口。MCP 服务器居中,将高层 tool calls 转换为底层 browser 命令。
LLM ← MCP → MCP Server ← CDP → Browser
(clawctl) (Clawbrowser)LLM 发送 MCP tool calls("导航到这个 URL"、"点击登录按钮")。MCP 服务器将其转换为 CDP 命令并发送给 browser。结果沿链路返回。
为什么 browser 层很重要
大多数 MCP browser 服务器通过 CDP 连接普通 Chrome instance。该 browser 没有 fingerprint 管理、没有 proxy routing、没有 anti-detection。agent 在演示站能跑,到了 Cloudflare、DataDome 或 Akamai 保护的生产网站就被拦截。
Clawbrowser 的内置 MCP 服务器连接自有 Chromium engine。当 LLM 调用 navigate 时,MCP 服务器向一个已具备 managed fingerprints、geo-aligned proxy routing 和 engine 级 CDP signal 压制的 browser 发送 CDP 命令。不需要 stealth 插件、proxy 中间件或 fingerprint 轮换代码。
MCP 路径(LLM 驱动,零胶水代码):
{
"mcpServers": {
"clawbrowser": {
"command": "clawctl",
"args": ["mcp", "serve"]CDP 路径(脚本,完全控制):
browser = await playwright.chromium.connect_over_cdp(
"http://127.0.0.1:9222"
)两条路径都连接同一个 Clawbrowser instance,使用相同的 fingerprints、proxy routing 和 anti-detection。根据你的用例选择接口。如果同一项目中不同部分需要不同层级的控制,两者可以同时使用。
用两个 protocol 构建 agent 的分步教程见 如何构建能浏览网页的 AI Agent。
决策框架
| 问题 | CDP | MCP |
|---|---|---|
| 你事先知道确切步骤吗? | 是 | 用 CDP |
| LLM 应该决定点什么吗? | 用 MCP | 是 |
| 需要 network 拦截吗? | 是 | 不可用 |
| 需要亚秒级 action 速度吗? | 是 | 否(LLM 延迟) |
| 面向非开发者吗? | 否 | 是 |
| 在用 Claude Code 或 Cursor 吗? | 可用 | 原生集成 |
| 想要零 browser 代码吗? | 否 | 是 |
如果两边都有"是",就两个都用:LLM 驱动的部分用 MCP,精确控制的部分用 CDP。Clawbrowser 为两种 protocol 提供 browser 层。
FAQ
不换 browser 能在 CDP 和 MCP 之间切换吗?
可以,前提是你的 browser 同时支持两者。Clawbrowser 为每个 profile 公开 CDP endpoint 并内置 MCP 服务器。脚本自动化用 Playwright 连接 CDP endpoint,LLM 驱动浏览用 MCP 服务器,两者共享相同的 browser profile、fingerprints 和 sessions。两种连接方式的操作指引见 如何用 CDP 把 Cursor 连接到真实浏览器。
哪个 protocol 更快?
CDP。因为不涉及 LLM inference,命令在毫秒内执行。MCP 每个 action 需要 0.5~3 秒,因为 LLM 要决定调哪个工具并解读结果。50 步抓取任务,CDP 几秒完成,MCP 要几分钟。步骤已知的大批量自动化用 CDP,需要逐步判断的任务用 MCP。
WebDriver BiDi 呢?
WebDriver BiDi 是 W3C 标准,旨在用 browser 无关的 protocol 取代 WebDriver(Selenium 所用)和部分 CDP。目前仍在成熟中。Playwright 和 Puppeteer 内部仍然使用 CDP。WebDriver BiDi 完全普及后,会在 browser 控制层与 CDP 竞争,但不会与 tool-use 层的 MCP 竞争。本文的 CDP vs MCP 决策框架不受底层 browser protocol 影响。
用哪个 protocol 都需要 anti-detect browser 吗?
是的,如果 agent 自动化的目标站有 anti-bot 保护。CDP 和 MCP 都不含 anti-detection,它们只是向 browser 发送命令的 protocol。如果 browser 泄漏自动化信号(navigator.webdriver、headless User-Agent、通用 canvas hash),不管用哪个 protocol 都会被封。完整检测模型见 浏览器自动化不被封的方法。
开始构建
从 clawbrowser.ai 把安装 prompt 粘贴到你的 AI agent 中即可安装 Clawbrowser。
MCP 路径(LLM 驱动):把 Clawbrowser MCP 服务器配置加到 agent,用自然语言开始浏览。
CDP 路径(脚本):用 Playwright 或 Puppeteer 连接 CDP endpoint,编写自动化代码。
两者兼用:LLM 推理要做什么的部分用 MCP,需要精确、快速、确定性控制的部分用 CDP。同一 browser、同一 fingerprints、同一 sessions。
CDP 详细解读见 AI Agents 开发者指南的 CDP 浏览器。完整构建教程见 如何构建能浏览网页的 AI Agent。
Continue exploring
Ask AI how Clawbrowser helps
继续阅读


