javascript - 如何使用 Puppeteer 获取请求的原始下载大小?

标签 javascript request puppeteer

即所有资源(包括视频/媒体)下载的数据总量,类似于 Chrome DevTools 的“网络”选项卡返回的数据。

最佳答案

截至 2018 年 1 月,似乎没有任何方法可以处理所有资源类型(监听 response 事件 fails for videos ),并且可以正确计算压缩资源。

最好的解决方法似乎是监听 Network.dataReceived 事件,然后手动处理该事件:

const resources = {};
page._client.on('Network.dataReceived', (event) => {
  const request = page._networkManager._requestIdToRequest.get(
    event.requestId
  );
  if (request && request.url().startsWith('data:')) {
    return;
  }
  const url = request.url();
  // encodedDataLength is supposed to be the amount of data received
  // over the wire, but it's often 0, so just use dataLength for consistency.
  // https://chromedevtools.github.io/devtools-protocol/tot/Network/#event-dataReceived
  // const length = event.encodedDataLength > 0 ?
  //     event.encodedDataLength : event.dataLength;
  const length = event.dataLength;
  if (url in resources) {
    resources[url] += length;
  } else {
    resources[url] = length;
  }
});

// page.goto(...), etc.

// totalCompressedBytes is unavailable; see comment above
const totalUncompressedBytes = Object.values(resources).reduce((a, n) => a + n, 0);

关于javascript - 如何使用 Puppeteer 获取请求的原始下载大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263345/

相关文章:

javascript - 用 Jest 测试回调函数

JavaScript - 使用变量创建嵌套值

jquery - JavaScript slider 如 "highstock slider"

javascript - 使用 GET 将数据 POST 到 Restful api

javascript - Svelte Tabs - 不要重新加载/销毁数据

android - 如何使用 Android koush/ion 动态形成请求

excel - Excel VBA : get error code for invalid URL in hyperlink with WinHttpRequest

python - 如何在 Django 中处理 PUT 请求? (不在drf中)

javascript - Puppeteer 中的 XPath 表达式而不是 CSS 选择器?

javascript - Node.js puppeteer - 在循环中使用数组中的值来循环浏览页面