编程 浏览器自动化技术栈全解:从CDP到browsermcp,一文搞懂所有核心概念

2026-04-27 06:15:37 +0800 CST views 6

你是否也被这些名词搞晕过?CDP是什么?和Playwright是什么关系?browser-use和Playwright到底有什么区别?midscene又是干嘛的?browsermcp怎么用?好不容易想用AI来操作浏览器自动化,结果光是搞懂这些工具之间的关系就耗尽了耐心。本文帮你彻底梳理清楚。

最底层:Chromium

Chromium是所有浏览器自动化的地基。Google Chrome、Microsoft Edge、Brave、360安全浏览器等,本质上都基于Chromium构建。当我们讨论浏览器自动化时,真正操作的是Chromium系浏览器对外暴露的CDP能力。

CDP:核心控制协议

CDP全称Chrome DevTools Protocol,是浏览器对外开放的远程控制协议。通过它可以让浏览器打开页面、执行JavaScript、读取DOM、监听网络、截图、输入文本、点击元素、管理Tab生命周期。CDP基于WebSocket通信,外部程序通过JSON命令控制浏览器。

Playwright:成熟的自动化框架

Playwright比cdp-use更高一层,它把整个浏览器自动化流程封装成了完整框架。核心优势包括:智能等待(自动等待元素出现)、多浏览器支持(Chromium/Firefox/WebKit)、多上下文管理、网络拦截、文件上传、录制回放。相比更早的Puppeteer,Playwright更完整、等待机制更智能、社区更活跃。

browser-use:专为AI设计

browser-use是Python库,专门为AI Agent工作流设计。它提供直观的CLI命令:open(打开页面)、state(查看元素)、click(点击)、input(输入)、screenshot(截图)。最实用的功能是身份复用:用--profile参数启动时,会复制系统Chrome的profile数据,拉起新的Chrome进程继承登录态——cookies、本地存储、登录凭证全部带过来。它最适合小红书、抖音等多平台后台视频上传等场景。

Midscene:视觉驱动方案

当遇到shadow DOM(影子DOM)时,browser-use和Playwright都会失效。shadow DOM是Web Components技术,把部分DOM结构封装起来,外部脚本无法直接访问。视频号后台大量使用wujie的shadow DOM,按钮明明看得见但自动化工具找不到。Midscene是字节跳动出品的AI多模态自动化框架,核心思路完全不同于传统方式:不是先理解DOM结构,而是先理解页面截图里有什么,然后AI视觉模型定位元素位置,再执行点击。这种方式可以攻克shadow DOM等复杂页面,但代价是慢(有视觉理解延迟)、贵(调用视觉模型有成本)、不够精确(依赖视觉判断而非选择器)。

browsermcp:AI直连当前浏览器

browsermcp是Chrome官方出品的MCP服务器,让AI直接连接你当前正在使用的浏览器,而不是重新拉起一个新浏览器。它可以让AI直接看到当前浏览器状态并继续操作,适合日常AI辅助编程和调试。目前还不完美:文件选择类操作暂时不支持,复杂交互场景覆盖不全,仍在快速迭代中。

技术全景图

所有工具是一套逐层生长的技术链:最底层是Chromium底座,核心能力是CDP协议,往上是cdp-use底层封装,再往上是Playwright工程框架,然后分出browser-use(面向Agent)、Midscene(视觉路线)、browsermcp(上下文路线)三条路线。它们不是竞争替代关系,而是互补的。

实战建议

爬虫/数据采集选Playwright;多平台视频自动发布(小红书/抖音)选browser-use;视频号后台自动化选Midscene;日常AI辅助编程选browsermcp;从零搭建稳定自动化系统选Playwright加自定义封装。

结语

过去浏览器的所有能力都是为「人」设计的,现在越来越多能力开始为「AI」准备。browser-use让AI像人一样逐步操作浏览器,Midscene让AI用看图理解绕过DOM限制,browsermcp让AI接入人的浏览器上下文。技术演进的规律从未改变:CDP的诞生让程序可以控制浏览器,Playwright让开发者可以稳定写自动化脚本,browser-use让AI可以自然操作浏览器。每一步都是把「人肉操作」变成「程序执行」再变成「AI决策」的过程。现在,也许我们正在见证第三步的开始。

推荐文章

16.6k+ 开源精准 IP 地址库
2024-11-17 23:14:40 +0800 CST
JS中 `sleep` 方法的实现
2024-11-19 08:10:32 +0800 CST
Vue3的虚拟DOM是如何提高性能的?
2024-11-18 22:12:20 +0800 CST
Vue3 中提供了哪些新的指令
2024-11-19 01:48:20 +0800 CST
使用 Go Embed
2024-11-19 02:54:20 +0800 CST
Vue3中如何实现国际化(i18n)?
2024-11-19 06:35:21 +0800 CST
Golang 中你应该知道的 Range 知识
2024-11-19 04:01:21 +0800 CST
Vue3中如何处理跨域请求?
2024-11-19 08:43:14 +0800 CST
使用Ollama部署本地大模型
2024-11-19 10:00:55 +0800 CST
Vue3中的组件通信方式有哪些?
2024-11-17 04:17:57 +0800 CST
程序员茄子在线接单