将网络数据解析为HAR文件

时间:2020-04-22 12:28:51

标签: google-chrome har chrome-remote-debugging

我正在尝试创建一个脚本,该脚本在远程调试端口上侦听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)));
}

这按预期工作,我可以看到终端上打印了一堆对象。从这里开始,我很茫然。我的目标很简单:

  1. 对于每个请求,我想测量请求和响应之间的时间
  2. 对于每个请求,我想测量请求和相应响应之间的数据传输大小(以字节为单位)。

看着响应,我发现有些对象带有诸如Network.dataReceivedNetwork.loadingFinished等方法。每个这些对象还有一个唯一的ID。基于这些,我应该如何设置执行活动1和2所需的代码?

0 个答案:

没有答案