Chrome DevTools Protocol远程调试

Chrome DevTools Protocol远程调试

Chrome DevTools Protocol简介

Chrome DevTools Protocol(以下简称CDP)是一套工具协议,用于调试、监测 Chrome、Chromium以及其他基于Blink内核的浏览器。前端开发常用的Chrome DevTools以及puppeteer也是基于这套工具协议开发的。

Chrome DevTools Protocol划分了多个不同的功能模块(域),如DOM,Debugger,Network,Timeline等,每个模块以结构化JSON的形式都定义了一些命令和事件。

具体可以参考官方文档:

https://chromedevtools.github.io/devtools-protocol/

运行示例

Chrome内置标准流程

准备工作:

1. 待调试页面开启–remote-debugging-port参数,设置监听端口

2. 在DevTools控制台添加URL参数ws/wss,建立Websocket通信

完整流程:

1. 在DevTools控制台界面输入指令

2. DevTools控制台将命令转为标准协议信令,然后通过Websocket消息通道发送给待调试页面

3. 待调试页面收到信令后,解析并执行该指令

4. 待调试页面将执行结果通过Websocket消息通道回传给DevTools控制台,控制台解析并展示该结果

自建流程

在原有的流程基础上,新增CPD/JS信令翻译模块,利用JavaScript对客户端接收到的CDP信令进行处理,将CDP协议翻译成可执行的JavaScript语句,执行后将执行结果转换成CDP协议发回给DevTools控制台