Weyu‘s blog

  • 方案一:Chrome DevTools Protocol(CDP)
  • 方案二:浏览器插件 + Native Messaging
  • 首页
  • 代码
  • 作品
  • 学习
  • 折腾
  • 随笔
  • 关于博主
  • 时光映像
  • 我的网盘
  • 文章归档
  • 友情链接

使用CDP实现真实浏览器自动化爬虫控制:从困境到解决

  • admin
  • 2025-04-22
  • 0

起因:

在进行某些网站的数据采集时,我遇到了一个棘手问题:目标站点采用了高度反爬机制,所有常规爬虫框架(如 Puppeteer、Selenium、Playwright)均无法有效加载页面内容或被强制跳转。最终确认,这些网站只能在真实用户的浏览器中访问并展示完整数据。

经过与问题分析:

为了破解这个限制,我采取了一个迂回策略:通过自建本地 VPN 的方式,捕获并获取了所有浏览器真实访问返回的响应体。这意味着我可以从系统层拿到完整 HTML 和数据,只差一环——如何让浏览器自动化地打开页面、滑动、点击,实现数据采集的自动化。

明确的需求:

  • 控制用户实际使用的浏览器(Chrome/Edge)打开指定页面
  • 实现自动跳转、滚动、点击、表单操作等常见浏览行为
  • 避免使用无头浏览器或额外的 GUI 控制(如按键精灵)
  • 需要能与已有的本地程序集成,实现数据采集逻辑的统一

探索的两种方案:

方案一:Chrome DevTools Protocol(CDP)

  • 通过 --remote-debugging-port=9222 启动 Chrome,开启 WebSocket 接口
  • 本地程序通过 WebSocket 连接,实现页面跳转、点击、滚动、获取源码等操作
  • 基于 TCP,协议清晰,支持语言多,调试方便

方案二:浏览器插件 + Native Messaging

  • 开发浏览器扩展 + 本地程序
  • 浏览器扩展接收 JSON 消息控制 DOM 行为(跳转、点击、滚动等)
  • 本地程序与浏览器插件通过 stdin/stdout 管道通信,必须注册注册表项或 manifest
  • 适用于控制用户真实浏览器,适合桌面级长期驻留控制

最终选择:

经过评估,我最终选择了CDP 方式,理由如下:

  • 实现快速、简单、无需额外插件开发
  • 控制能力强:支持页面跳转、滚轮滑动、点击元素、获取源码等
  • 完美兼容我已有的“本地 VPN 响应体抓取”方案,仅依靠CDP的真实浏览器环境与远程操作来实现爬虫的自动化.
  • 调试便捷,协议开放,官方文档完善

目前已实现的功能:

  • 浏览器绑定与连接
  • 页面跳转(支持新标签页)
  • 滚动控制(支持像素单位滑动)
  • 获取页面完整 HTML 源码

接下来我将继续扩展对 DOM 的点击、输入、监听等自动化操作模块,进一步完善整个爬虫自动化流程。

如果你也在真实浏览器自动化方向遇到瓶颈,不妨试试 CDP 的方式,可能它正是你寻找的突破口。

© 2025 Weyu‘s blog
  • {{ item.name }}
  • {{ item.name }}