chrome-har

中文文档
2.0.0发布于 2026/11/03MITES Module

从Chrome调试协议数据创建HAR文件。

中文使用文档
文档目录3 节
  1. 创建一个新的bug报告
  2. 流消息
  3. 支援响应机构

Chrome-har

Unit tests

创建 哈尔 基于的文件 Chrome DevTools协议 数据。

我们已经厌倦了等待b谷歌的3万多名工程师实现一种自动获取HAR文件的方法 https://issues.chromium.org/issues/40809195 因此,我们同时实现了自己的解决方案。

最初从 Browsertime,初步实施的灵感来源于 Chromedriver_har.

创建一个新的bug报告

确保生成一个事件跟踪日志文件,我们可以使用它来重新创建您的问题。如果使用Browsertime,则可以使用 --chrome.collectPerfLog:

$ browsertime --chrome.collectPerfLog -n 1 https://www.sitespeed.io

然后取文件名 chromeperflog json.gz——1. 把它放在要点中,或者以任何你想要的方式提供给我们。

如果你使用sitesspeed .io:

$ sitespeed.io --browsertime.chrome.collectPerfLog -n 1 https://www.sitespeed.io

流消息

harFromMessages 接受消息数组(或任何可迭代对象)。如果消息来自流,则使用 harFromMessagesAsync。它接受一个异步可迭代对象,在消息到达时处理每个消息,并为HAR返回一个承诺。您不需要将所有消息都保存在内存中。

import { harFromMessagesAsync } from 'chrome-har';

const har = await harFromMessagesAsync(messageStream);

支援响应机构

如果你使用Chrome-har独立(没有Browsertime/站点速度。如果在HARs中设置了响应体,则可以在HARs中使用get 响应对象 由呼叫者和如果 includeTextFromResponseBody 选项设置为 true.

例如:

const harEvents: Array<any> = [];

client.on('Network.requestIntercepted', async (params: any) => {
  // Get the response body
  const response = await client.send(
    'Network.getResponseBodyForInterception',
    { interceptionId: params.interceptionId },
  );

  // Set the body on the response object
  if (params.response != null) {
    params.response.body = response.body;
  } else {
    params.response = response;
  }

  // Continue the request
  await client.send(
    'Network.continueInterceptedRequest',
    { interceptionId: params.interceptionId },
  );

  harEvents.push({ method, params });
});

const har = harFromMessages(harEvents, {includeTextFromResponseBody: true});

版本与发布记录

chrome-har 共发布 46 个版本,首次发布于 2017/03/05;过去 12 个月发布了 5 个版本。

版本发布日期距今
2.0.0latest2026/11/03今天
1.3.12026/05/195 个月前
1.3.02026/05/065 个月前
1.2.12026/04/226 个月前
1.2.02026/04/226 个月前
1.1.12025/10/171 年前

关于 chrome-har 的常见问题

chrome-har 是什么?

从Chrome调试协议数据创建HAR文件。

如何安装 chrome-har?

在项目目录运行 npm install chrome-har,或使用 pnpm add / yarn add / bun add。

chrome-har 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/chrome-har 是否存在。

chrome-har 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

chrome-har 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

chrome-har 可以商用吗?

chrome-har 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

chrome-har 还在维护吗?

最新版本 2.0.0 发布于 2026/11/03(今天);至今共发布 46 个版本,其中过去 12 个月发布了 5 个;首次发布于 2017/03/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。