我正在尝试创建一个脚本,该脚本在远程调试端口上侦听chrome的多个实例。到目前为止,我已经能够创建一个websocket连接并启用网络跟踪。我现在只是在终端中记录响应,但是,我的目的是记录整个会话(即,整个浏览器运行时的网络活动)并生成一个HAR文件。
首先,我在浏览器中获得了一个打开页面列表。这提供了一个JSON对象,该对象具有用于所有类型的资源(页面,iframe等)的数组。之后,我将结果过滤为页面类型的结果,然后连接到webSocketDebuggerUrl
。
显示连接的摘录:
const conn = new Ws(page.webSocketDebuggerUrl);
conn.on('open', () => {
conn.send(JSON.stringify({
id: 1,
method: 'Network.enable'
}));
});
conn.on('error', (code, reason) => wsError(code, reason));
connections.push(conn);
此代码段打开一个连接,并向处理过程返回一系列Websocket连接。返回连接后,我只是为消息事件添加处理程序:
for(const conn of connections) {
conn.on('message', (msg) => console.log(JSON.parse(msg)));
}
这按预期工作,我可以看到终端上打印了一堆对象。从这里开始,我很茫然。我的目标很简单:
看着响应,我发现有些对象带有诸如Network.dataReceived
和Network.loadingFinished
等方法。每个这些对象还有一个唯一的ID。基于这些,我应该如何设置执行活动1和2所需的代码?