You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Puppeteer获取网络流量指标、传输数据及完成时间

使用Puppeteer获取网络流量指标及统计数据

以下是通过Puppeteer获取总网络传输流量、资源大小和任务完成时间的具体实现方案:

核心思路

借助Puppeteer的网络事件监听能力,追踪每个请求的传输数据;通过时间戳计算任务耗时,最终将统计结果转换为指定单位。

完整实现代码

const puppeteer = require('puppeteer');

(async () => {
  // 记录任务启动时间戳
  const taskStart = Date.now();
  
  const browser = await puppeteer.launch({ headless: 'new' });
  const page = await browser.newPage();

  // 初始化统计变量(单位:字节)
  let totalTransferredBytes = 0;
  let totalResourceBytes = 0;

  // 监听所有请求完成事件
  page.on('requestfinished', async (request) => {
    const response = await request.response();
    if (!response) return;

    // 获取实际网络传输的字节数
    const transferred = response.bytesReceived();
    // 获取资源原始大小(优先取响应头的content-length,无则读取响应体长度)
    const contentLength = response.headers()['content-length'];
    const resourceSize = contentLength ? parseInt(contentLength, 10) : (await response.buffer()).length;

    totalTransferredBytes += transferred;
    totalResourceBytes += resourceSize;
  });

  // 访问目标页面,等待网络空闲确保加载完成
  await page.goto('https://your-target-url.com', { waitUntil: 'networkidle2' });

  // 计算任务耗时并转换单位
  const taskEnd = Date.now();
  const taskDurationMin = ((taskEnd - taskStart) / 1000 / 60).toFixed(2);

  // 转换流量和资源大小单位
  const totalTransferredKB = (totalTransferredBytes / 1024).toFixed(2);
  const totalResourceMB = (totalResourceBytes / (1024 * 1024)).toFixed(2);

  // 输出统计结果
  console.log(`总网络传输流量: ${totalTransferredKB} kB`);
  console.log(`总资源大小: ${totalResourceMB} MB`);
  console.log(`任务完成时间: ${taskDurationMin} 分钟`);

  await browser.close();
})();

关键细节说明

  • 网络事件监听:使用requestfinished事件捕获所有成功完成的请求,确保统计数据完整;若需统计失败请求,可额外监听requestfailed事件。
  • 传输流量计算:response.bytesReceived()返回的是实际从网络接收的字节数(包含压缩、缓存命中时的少量传输),符合真实网络流量统计需求。
  • 资源大小计算:优先读取响应头的content-length(资源原始大小),若响应头未提供则直接读取响应体长度,保证数据准确性。
  • 页面加载判断:waitUntil: 'networkidle2'会等待页面加载完成后,网络中活跃请求不超过2个时再继续执行,避免遗漏后续加载的资源。

统计效果示例

网络流量统计示例

内容的提问来源于stack exchange,提问作者nullException

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:10:21