Browser-Use深度解析:重新定义AI与浏览器的智能协作
95后打造世界首个行动型浏览器——Fellou,从「浏览」到「行动」一键直达!
browser-user能够操作浏览器网页的原理
我们可以把整个原理想象成一个 “AI数字员工” 在帮您操作电脑。这个数字员工有一个超级大脑和一双灵巧的手。
“AI数字员工”的工作流程(简化版)
整个流程的核心是一个持续的 “观察(O) -> 思考(T) -> 行动(A) -> 验证(V)” 循环,直到任务完成。
O-T-A-V 循环流程

下面我们来详细拆解这个循环中的每一步:
第一步:观察 - 用“眼睛”看清现场
当您下达指令后,这位数字员工首先会“睁开眼睛”观察当前的浏览器状态。它通过两种方式来看:
- 视觉之眼(截图):就像我们人眼一样,它会对整个网页屏幕进行截图。这能让它看到页面的实际布局、图片、按钮位置等。
- 结构之眼(DOM分析):同时,它会读取网页的源代码(HTML),并解析成一个结构化的“家谱树”(DOM树)。这能让它理解每个按钮、输入框的“身份ID”和技术属性。
这一步的输出:一个结合了“视觉画面”和“结构信息”的完整现场报告。
第二步:思考 - 用“大脑”分析决策
数字员工将“现场报告”和您的“任务指令”一起发送给它的“超级大脑”——大语言模型。
-
大脑的工作:
- 理解现状:“我现在在淘宝的首页,有一个很大的搜索框。”
- 规划步骤:“用户要找机械键盘。所以我第一步应该把‘机械键盘’输入到这个搜索框里。”
- 选择行动:“我需要使用‘输入文本’这个动作,目标对象是搜索框。”
- 精确瞄准:它会根据DOM树和截图,找到搜索框对应的唯一标识符(比如一个CSS选择器或它在DOM树中的位置)。
这一步的输出:一个明确的、可执行的指令,例如:在元素 [#search-box] 中输入文本 “机械键盘”。
第三步:行动 - 用“手”执行操作
现在,数字员工要动手了。它通过一个叫做 Chrome DevTools Protocol (CDP) 的“神经连接线”向浏览器发送指令。
- CDP 是浏览器留给开发者的“后门”或“遥控器”,可以通过发送特定的命令来精确控制浏览器的几乎所有行为。
- 数字员工将“思考”步骤中生成的指令,翻译成CDP能听懂的命令,例如:
Input.dispatchKeyEvent(模拟键盘输入)、DOM.click(模拟点击)等。
浏览器接收到这些命令后,就会像真人操作一样,执行点击、输入、滚动等操作。
第四步:验证与循环 - 检查结果并继续
行动之后,数字员工不会立刻进行下一步。它会再次回到 第一步【观察】:
- 检查结果:再次截图,看看页面是否发生了变化?是否跳转到了搜索结果页?
- 评估成功:“大脑”会判断上一步行动是否成功。比如,如果看到了搜索结果列表,就说明搜索成功了。
- 决定下一步:如果成功,它就继续下一个子任务(比如:点击第一个商品);如果失败,它会尝试其他策略(比如:页面没加载完就等一秒再试,或者换一个选择器)。
这个 O-T-A-V 循环会一直进行下去,直到最终完成您下达的整个复杂任务(找到并加入购物车)。
与传统工具的核心区别(为什么说它是革命性的)
您提供的文章重点强调了这一点:
| 特征 | 传统工具(如Selenium) | Browser-Use(AI驱动) |
|---|---|---|
| 如何工作 | 命令式编程:程序员写下每一步精确的代码。 | 声明式任务描述:你只需要告诉它“要做什么”。 |
| 核心能力 | 忠实的执行者:严格按脚本执行,没有理解能力。 | 聪明的助手:具备观察、推理、决策能力。 |
| 灵活性 | 脆弱:页面布局一变,选择器可能失效,脚本就报错。 | 健壮:能通过视觉和理解适应页面变化,尝试其他方法。 |
| 学习成本 | 高:需要学习编程和网页技术。 | 低:会用自然语言描述任务即可。 |
总结
所以,browser-use 能够操作浏览器的原理,可以概括为:
它将大语言模型(LLM)的强大的自然语言理解和推理能力,与浏览器提供的底层自动化控制协议(CDP)连接起来,通过一个持续的“感知-思考-行动”循环,将用户的高级语言指令,分解并翻译成一系列底层的、精确的浏览器操作命令,从而模拟出一个真正“会使用浏览器”的智能数字员工。
这不再是简单的自动化,而是真正的 智能化交互。它让AI从只是一个聊天机器人,变成了一个能够在实际数字环境中为你工作的智能代理。希望这个解释能帮助您更好地理解这个令人兴奋的技术!
我们来深入介绍一下 Chrome DevTools Protocol,这个让 browser-use 等工具得以实现“魔法”的核心技术。
什么是 Chrome DevTools Protocol (CDP)?
想象一下,你的浏览器(Chrome、Edge、Chromium等)内部有一个完整的遥控系统。这个遥控器可以控制浏览器的每一个部分:查看网页结构、模拟点击、监控网络请求、执行JavaScript代码等等。
Chrome DevTools Protocol (CDP) 就是这个官方的、底层的“遥控协议”。它是一套基于 WebSocket 的 API,允许外部工具通过发送特定的 JSON 格式命令,来与 Chrome/Chromium 内核的浏览器进行深度交互。
当你打开 Chrome 开发者工具(按 F12)时,你看到的那个功能强大的界面,其底层正是通过 CDP 与浏览器进行通信的。
CDP 的核心工作原理
1. 通信基础:如何连接?
CDP 主要通过两种方式工作:
-
调试端口:在启动浏览器时,通过命令行参数
--remote-debugging-port=9222开启一个调试端口。 -
WebSocket 连接:外部工具(如
browser-use)然后连接到http://localhost:9222,获取一个 WebSocket URL,并通过这个 WebSocket 连接向浏览器发送命令和接收事件。
这就好比:
- 你在浏览器上打开了一个“远程控制”开关(启动调试端口)。
- 你的自动化脚本通过一个“对讲机”(WebSocket 连接)与浏览器建立联系。
- 你通过对讲机下达指令,浏览器执行并回复结果。
2. 核心概念:域
CDP 的功能被组织成多个域,每个域负责一类特定的功能。这就像一个公司的不同部门:
| 域 | 职责 | 相当于公司部门 | 常用命令举例 |
|---|---|---|---|
Page |
控制页面的导航、加载、视觉操作 | 总裁办公室 |
Page.navigate(跳转页面), Page.captureScreenshot(截图) |
DOM |
获取、查询、修改文档对象模型 | 架构部 |
DOM.getDocument, DOM.querySelector
|
Runtime |
执行 JavaScript 表达式 | 研发部 |
Runtime.evaluate(执行JS代码) |
Network |
监控和管理网络请求 | 采购/物流部 |
Network.enable(开启网络监控) |
Input |
模拟用户输入(键盘、鼠标、触摸) | 操作工 |
Input.dispatchMouseEvent(模拟点击) |
Target |
管理浏览器标签页和上下文 | HR部 |
Target.createTarget(创建新标签页) |
CSS |
获取和操作 CSS 样式 | 设计部 | CSS.getComputedStyleForNode |
CDP 的实际工作流程(一个简单例子)
假设我们要通过 CDP 实现:“打开百度,搜索 AI”。
这个过程会分解成以下 CDP 命令:
1. 启动浏览器并连接
# 启动Chrome,并开启9222调试端口
chrome --remote-debugging-port=9222
然后,工具通过 WebSocket 连接到 ws://localhost:9222/devtools/page/...。
2. 导航到百度
// 发送的命令 (JSON-RPC格式)
{
"id": 1,
"method": "Page.navigate",
"params": {
"url": "https://www.baidu.com"
}
}
// 浏览器返回的事件,表示导航完成
{
"method": "Page.frameNavigated",
"params": { ... }
}
3. 定位搜索框
首先需要获取页面的 DOM 结构,然后找到搜索框的元素ID。
// 查询搜索框(假设我们知道它的CSS选择器是 #kw)
{
"id": 2,
"method": "DOM.querySelector",
"params": {
"nodeId": 1, // 整个文档的根节点ID
"selector": "#kw"
}
}
// 浏览器返回搜索结果
{
"id": 2,
"result": {
"nodeId": 10 // 搜索框元素的唯一节点ID
}
}
4. 模拟点击搜索框(使其获得焦点)
{
"id": 3,
"method": "Input.dispatchMouseEvent",
"params": {
"type": "mousePressed",
"button": "left",
"x": 300, // 搜索框的大概X坐标
"y": 200, // 搜索框的大概Y坐标
"clickCount": 1
}
}
5. 模拟键盘输入 “AI”
{
"id": 4,
"method": "Input.dispatchKeyEvent",
"params": {
"type": "keyDown",
"text": "A"
}
}
// ... 发送一系列 keyDown、char、keyUp 事件来模拟输入 "A" 和 "I"
{
"id": 5,
"method": "Input.dispatchKeyEvent",
"params": {
"type": "keyDown",
"text": "I"
}
}
6. 模拟按下回车键
{
"id": 6,
"method": "Input.dispatchKeyEvent",
"params": {
"type": "keyDown",
"key": "Enter",
"windowsVirtualKeyCode": 13
}
}
CDP 的优势与为什么它如此强大
- 原生与深度集成:由 Chrome 团队直接开发和维护,可以访问浏览器最底层的功能,这是其他基于注入脚本的工具无法比拟的。
-
高保真模拟:
Input域可以产生真实的、合成的事件,而不是简单的 DOM 事件。这意味着网站更难检测到这是自动化脚本在操作(有助于绕过一些反爬虫机制)。 - 全面的观测能力:可以监控所有网络请求、拦截并修改请求/响应、获取浏览器性能数据、监听 JavaScript 异常等。
- 协议驱动:基于 WebSocket 的协议意味着可以用任何编程语言(Python, Node.js, Go, Java等)来编写控制脚本,只要该语言支持 WebSocket。
CDP 与 Selenium WebDriver 的区别
这是一个常见的困惑点:
| 特性 | Chrome DevTools Protocol | Selenium WebDriver |
|---|---|---|
| 定位 | 底层协议,是浏览器自身的调试接口。 | 标准化规范,是一个跨浏览器的Web自动化标准。 |
| 工作原理 | 直接通过 WebSocket 与浏览器内核通信。 | 通过一个独立的驱动程序与浏览器通信。 |
| 性能 | 通常更快,因为通信更直接,没有中间层。 | 稍慢,多了一层驱动程序的转换。 |
| 功能范围 | 更广更深,可以访问性能分析、内存快照等开发级功能。 | 专注于 Web 自动化测试的核心功能。 |
| 跨浏览器 | 主要针对 Chrome/Chromium 内核浏览器。 | 支持所有主流浏览器(Chrome, Firefox, Safari, Edge)。 |
| 易用性 | 较原始,需要处理底层命令和事件。 | 更友好,有高级API和丰富的客户端库。 |
简单比喻:
- Selenium WebDriver 像是一辆汽车的标准自动挡:所有车(浏览器)的用法都一样,容易上手,但功能受限。
- CDP 像是打开了汽车的引擎盖,直接接线控制:功能强大到可以调整发动机参数,但需要专业知识,且不同车型(浏览器)接法可能不同。
现代的工具如 Puppeteer (Node.js) 和 Playwright (跨浏览器) 都是在 CDP 的基础上构建的,它们封装了 CDP 的复杂性,提供了更简单易用的 API。
总结
Chrome DevTools Protocol 是现代浏览器自动化和智能代理技术的基石。
它提供了一个前所未有的强大接口,使得像 browser-use 这样的项目能够:
-
“看”:通过
Page.captureScreenshot获取视觉信息。 -
“读”:通过
DOM和Runtime域获取页面结构和内容。 - “想”:将上述信息送给大语言模型(LLM)进行决策。
-
“做”:通过
Input和Page域执行精确的交互操作。
正是有了 CDP,我们才得以实现“用自然语言告诉 AI 去操作浏览器”这一科幻般的场景。它打通了高级人工智能与真实数字世界之间的“最后一公里”。