# chrome-har 中文文档

规范地址：https://npmcn.com/package/chrome-har/

版本：2\.0\.0
npm 元数据更新时间：2026-11-03T06:43:11.833Z
中文译文更新时间：2026-11-03T07:46:54.463Z
软件包许可：MIT

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/chrome-har
原文对照：https://npmcn.com/package/chrome-har/?lang=original
项目主页：https://github.com/sitespeedio/chrome-har
源码仓库：https://github.com/sitespeedio/chrome-har

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：56.2 kB，11 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22\.0\.0
- 运行依赖：1 个
- 首次发布：2017-03-05T14:25:29.466Z
- 最新版本发布：2026-11-03T06:43:11.646Z
- 已发布版本数：46（近 12 个月 5 个）

## 中文简介

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

## 安装

```sh
npm install chrome-har
```

也可以使用：`pnpm add chrome-har`、`yarn add chrome-har`、`bun add chrome-har`

## README

# Chrome-har

![Unit tests](https://github.com/sitespeedio/chrome-har/workflows/Unit%20tests/badge.svg)

创建 [哈尔](http://www.softwareishard.com/blog/har-12-spec/) 基于的文件 [Chrome DevTools协议](https://chromedevtools.github.io/devtools-protocol/) 数据。

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

最初从 [Browsertime](https://github.com/sitespeedio/browsertime)，初步实施的灵感来源于 [Chromedriver\_har](https://github.com/woodsaj/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返回一个承诺。您不需要将所有消息都保存在内存中。

```javascript
import { harFromMessagesAsync } from 'chrome-har';

const har = await harFromMessagesAsync(messageStream);
```

## 支援响应机构

如果你使用Chrome-har独立(没有Browsertime/站点速度。如果在HARs中设置了响应体，则可以在HARs中使用get [响应对象](https://chromedevtools.github.io/devtools-protocol/tot/Network#type-Response) 由呼叫者和如果 `includeTextFromResponseBody` 选项设置为 `true`.

例如:

```javascript
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 是什么？

从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 和提交记录判断。

