乐于分享
好东西不私藏

AI Agent浏览器操作 01:无头浏览器与CDP协议——AI是怎么"打开网页"的

AI Agent浏览器操作 01:无头浏览器与CDP协议——AI是怎么"打开网页"的

AI Agent浏览器操作 01:无头浏览器与CDP协议——AI是怎么"打开网页"的

你有没有遇到过这种情况——

让AI帮忙查一下某个网站的数据,它却回复你说"无法访问网络"。

AI明明能写代码、能画图、能做分析,偏偏就是"上不了网"。这听起来像个bug,但其实是个架构问题。

今天,我们从最底层开始,拆开AI上网的第一步:无头浏览器。

说明
:以下命令整理自 agent-browser 文档,源码中未经实测验证:

fillwaitwait-forextractcontentrefreshlist-tabsswitch-tab

open-new-tabchatcookiessessionconnectkillsetstealthhoverselect

源码中实测可用的命令:openclicksnapshotscreenshotclosescrollbackevaltypepressconsoleerrors

无头浏览器:没有脸的Chrome

什么是"无头"?

你电脑上的Chrome,打开后是这样的:地址栏、标签页、滚动条、按钮——一个完整的图形界面。

但如果把这套界面拿掉,只保留浏览器解析网页、执行JavaScript、发送网络请求的能力,剩下的那一半叫什么?

答案就是无头浏览器(Headless Browser)。

"Headless"这个词源自服务器领域的"headless server"——没有显示器、没有键盘鼠标的服务器。同理,无头浏览器就是能干活但不露脸的浏览器。

类比一下:无头浏览器就像一个"隐身快递员",它有手有脚(能访问网页、能提交表单),但没有脸(没有图形界面)。它在你看不见的地方完成任务,然后把结果告诉你。

怎么启动一个无头浏览器?

最简单的方式——如果你的电脑上装了Chrome,直接在终端敲一行命令:

chrome --headless --disable-gpu --no-sandbox https://example.com

这就是在以无头模式打开Chrome,访问 https://example.com。没有窗口,没有界面,一切在后台发生。

无头浏览器能做什么?

很多人以为无头浏览器只是个"爬虫",功能很局限。其实它能干的事情远比爬虫多:

能力
说明
举例
页面导航
打开网址、点击链接、填表提交
打开公众号后台、登录、进入数据页
内容抓取
获取页面HTML、DOM元素、截图
抓取动态渲染的内容、生成报告截图
网络拦截
监听和修改网络请求/响应
分析网站API、绕过限流
JavaScript执行
在页面中运行任意JS
操作前端组件、提取动态内容
文件下载
触发下载、保存文件
导出Excel、下载PDF
Cookie管理
读写浏览器Cookie
保持登录态、注入认证信息

换句话说:浏览器能做的任何事情,无头浏览器理论上都能做。只是没有界面,操作通过代码完成。

Chrome DevTools Protocol:Chrome的遥控器

CDP是什么?

当你用无头浏览器打开一个网页,这个浏览器怎么接收指令?

答案是:Chrome DevTools Protocol,简称CDP。

CDP是Chrome内置的调试协议。它的设计初衷是给开发者用的——当你打开Chrome开发者工具(F12),按"Elements"查看DOM、按"Network"查看网络请求,背后就是CDP在通信。

CDP通过网络协议(WebSocket)与Chrome通信,外部程序可以发送指令,Chrome接收后执行并返回结果。

这就好比:

●Chrome是一个机器人

●CDP是它的遥控器

●你的代码就是拿着遥控器的人

CDP能做什么?

CDP本质上是一个双向通信协议,支持两大类功能:

诊断命令:获取浏览器内部信息

●获取页面性能数据

●追踪网络请求

●分析JavaScript错误

控制命令:操作浏览器执行动作

●导航到指定网址

●点击、填表、滚动

●截屏

●读写Cookie

CDP与WebDriver的关系

如果你了解浏览器自动化,可能还听过WebDriver这个协议。

WebDriver是W3C制定的浏览器自动化标准,是一个跨浏览器的通用接口。Selenium等框架底层通过WebDriver与浏览器通信。

而CDP是Chrome独有的协议,功能比WebDriver更丰富。

简单理解:

●WebDriver = 通用遥控器(所有品牌都能用,但功能有限)

●CDP = Chrome专属遥控器(只有Chrome能用,但功能更强大)

框架通过 CDP 协议与浏览器通信——但需要注意,"走 CDP 协议"不是说框架直接暴露 CDP JSON-RPC,而是框架的 API 调用最终会映射到 CDP 操作。Playwright 有自己的 Protocol 层,agent-browser 也一样,CDP 是它们的共同底层。

无头浏览器的核心能力详解

1. 页面导航:打开网页只是开始

"打开网页"这件事,在浏览器里分很多步:

输入URL → DNS解析 → 建立连接 → 发送请求 → 接收HTML → 解析DOM → 执行JS → 渲染完成

无头浏览器打开网页的流程是一样的,只是没有可视化渲染。导航完成后,无头浏览器能拿到完整的DOM结构、页面内容、和所有网络请求记录。

2. 内容抓取:不只是HTML

获取页面内容,最基础的是获取完整HTML。但更常用的是:

截图:生成页面快照,AI可以通过图片理解页面当前状态

DOM元素抓取:精确提取页面中某个区域的内容

Accessibility树:专门为辅助功能设计的页面结构,对AI理解页面语义特别有用

3. 网络拦截:看清网站的底牌

很多网站的"数据"其实不是从HTML里返回的,而是通过JavaScript在页面加载后单独请求API获取的。无头浏览器的网络拦截能力可以捕捉到这些请求。

更强大的用法:修改或伪造响应。比如网站调用了一个API,我们可以用本地mock数据替代,测试前端逻辑。

4. JavaScript注入:直接操作页面

有时候需要在页面里直接执行JavaScript,比如操作一个只有通过JS才能触发的组件,或者读取某些只有JS运行时才有的数据。

快速理解三个关键概念

在深入之前,有三个概念需要先理清楚,它们贯穿整个系列:

┌────────────────────────────────────────────────────────────────┐│  无头浏览器(Headless Browser)                                  ││  没有图形界面的Chrome,能执行所有浏览器能力                       ││  回答:"用什么工具上网?"                                        │└────────────────────────────────────────────────────────────────┘                              │                              ▼┌────────────────────────────────────────────────────────────────┐│  CDP协议(Chrome DevTools Protocol)                            ││  Chrome的遥控器,通过WebSocket与浏览器双向通信                   ││  回答:"怎么命令浏览器做事?"                                    │└────────────────────────────────────────────────────────────────┘                              │                              ▼┌────────────────────────────────────────────────────────────────┐│  浏览器自动化框架(Playwright / agent-browser)                  ││  封装了CDP的高级API,让我们不用写原始的JSON-RPC                  ││  回答:"用什么代码控制浏览器?"                                  │└────────────────────────────────────────────────────────────────┘

三者关系:框架通过CDP协议控制无头浏览器。选哪个框架,底层都是同一个CDP协议。

框架演进:2024年之前 vs 2025年之后

2024年之前的主流方案

2017-2024年间,浏览器自动化领域的主流是Puppeteer(Google出品,2017年,90.4k stars)和Playwright(微软出品,2020年,90.3k stars)。

这两个框架设计目标是通用的浏览器自动化——写测试脚本、做爬虫、做数据抓取。它们的API是给人类程序员用的,特点是:

●API复杂、功能多、学习曲线陡

●需要自己处理云端部署、CDP连接管理

●没有内置AI Agent的感知→规划→执行闭环

对于人类程序员来说这没问题,但AI Agent调用时有两个显著问题:

1API太重:AI需要理解几十种API语义才能正确调用

2没有任务规划:Playwright只执行动作,不理解任务;AI需要自己设计感知→规划的循环

2025年的新方案:agent-browser

2025年,Vercel Labs 推出了agent-browser(GitHub 35.3k stars,Apache-2.0 协议,当前版本 v0.27.1),一个专门为AI Agent设计的浏览器控制工具。

设计上完全不同:

●CLI优先:一个命令做一件事,适合AI调用

●云端原生:内置对主流云端浏览器服务的支持(Browserless、Browserbase、BrowserUse等)

●感知结果结构化:snapshot命令返回的不只是HTML,而是带ref ID的结构化元素列表,AI可以直接引用

●会话持久化:内置profile机制,Cookie和登录态可以跨会话复用

┌─────────────────────────────────────────────────────────────────┐│  Playwright / Puppeteer(2017-2024)                            ││  目标:人类程序员的浏览器自动化工具                                ││  API:复杂、完整、需要理解浏览器内部概念                           ││  适用:测试脚本、数据爬取、复杂自动化                              │└─────────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────────┐│  agent-browser(2025+)                                          ││  目标:AI Agent的浏览器控制工具                                   ││  API:简单、命令式、AI可直接调用                                   ││  适用:云端AI Agent、任务规划框架、通用网页操作                    │└─────────────────────────────────────────────────────────────────┘

这个差异在实操中非常重要:Playwright是给人用的,agent-browser是给AI用的。

下一步预告

今天我们搞懂了三个核心概念:无头浏览器是什么、CDP协议怎么工作、以及为什么2025年出现了新的框架。

下一篇文章,我们做一个横向对比——Playwright vs agent-browser,帮助你在实际项目中做出选择。

路线选型之后,才是真正的实操。

相关笔记

●[[02-Playwright_vs_agent-browser对比选型]] — 两条路线,选哪条

●[[03-agent-browser快速上手]] — 选定路线后的第一篇实操

相关学习资料