Chrome DevTools Protocol
Chrome DevTools Protocol允许第三方对基于 Chrome 的网站进行检测、调试、分析等操作。
也就是说,我们可以自行开发工具,通过 Chrome DevTools Protocol 来获取 Chrome 中网站运行的性能数据。
当我们打开 Chrome DevTools 的时候,浏览器内核 Chromium 本身会作为一个服务端,它会通过 WebSocket 与 Chrome DevTools 进行通信,过程如下:
- DevTools 将作为客户端,与作为服务端的 Chromium 建立连接;
- DevTools 通过 HTTP 获取 HTML、JavaScript 和 CSS 资源,并进行加载;
- 资源加载后,DevTools 会建立与浏览器的 WebSocket 连接;
- Chrome DevTools Protocol 基于 WebSocket,它利用 WebSocket 建立连接 DevTools 和浏览器内核的快速数据通道。
也就是说,DevTools 和浏览器内核的数据通信,是通过 Chrome DevTools Protocol 来完成。同样的,当我们通过 DevTools 从 Windows、Mac 或 Linux 计算机远程调试 Android 设备上的实时内容时,使用的也是该协议。
Chrome DevTools Protocol 具有与浏览器的许多不同部分(例如页面、Service Worker 和扩展程序)进行交互的 API。该协议把不同的操作划分为了不同的域(domain),每个域负责不同的功能模块,比如 DOM、Debugger、Network、Console 和 Performance 等,可以理解为 DevTools 中的不同功能模块。
对于如何使用该协议,其实已有针对这个协议封装出不同语言的库,包括 Node.js、Python、Java 等,可以在 awesome-chrome-devtools 这个项目中找到。