一句话回答
HAR(HTTP Archive)文件是浏览器加载网页时网络请求的 JSON 记录,包括 URL、请求头、Cookie、请求体和响应体、状态码以及每个请求的耗时,可从开发者工具导出用于排查问题。
什么是 HAR 文件?
HAR 文件(HTTP Archive,HTTP 归档)是一个 JSON 文件,记录了浏览器在加载或使用网页时发出的每一个网络请求:URL、方法、请求头、Cookie、请求体和响应体、状态码,以及每个请求的耗时分解。浏览器的开发者工具可以导出它,技术支持团队常要它,因为它准确记录了浏览器和服务器之间发生了什么。
这个格式由 Jan Odvarko 和 W3C 网页性能工作组定义,浏览器现在导出的是 1.2 版,文件扩展名是 .har。
HAR 文件里有什么
一段简化的示例:
{
"log": {
"version": "1.2",
"creator": { "name": "WebInspector", "version": "537.36" },
"pages": [{ "id": "page_1", "title": "https://example.com/pricing" }],
"entries": [{
"startedDateTime": "2026-11-06T09:14:03.120Z",
"time": 199.4,
"request": { "method": "POST", "url": "https://example.com/api/v1/pulse", "headers": [], "postData": {} },
"response": { "status": 202, "headers": [], "content": { "size": 0 } },
"timings": { "blocked": 2, "dns": 18, "connect": 31, "ssl": 22, "send": 0.4, "wait": 142, "receive": 6 }
}]
}
}
- pages: 每次页面加载一条。
- entries: 每个请求一条,按顺序排列,每条有
request、response、cache和timings。 - timings: 每个阶段花了多少毫秒。
怎么读耗时
| 阶段 | 衡量什么 | 什么时候会很长 |
|---|---|---|
| blocked | 在浏览器队列里排队 | 同一域名请求太多、优先级低 |
| dns | 域名解析 | 新域名、解析服务器慢 |
| connect | 建立 TCP 连接(含 TLS) | 新连接、服务器远 |
| ssl | TLS 握手(包含在 connect 里) | 新的 HTTPS 连接 |
| send | 发送请求 | 上传内容大 |
| wait | 等待响应的头一个字节 | 服务器或后端处理慢,这就是这个请求的首字节时间 |
| receive | 下载响应 | 响应体大、网络慢 |
示例里 time = 2 + 18 + 31 + 0.4 + 142 + 6 = 199.4 毫秒,大部分花在 wait 上:服务器用了 142 毫秒才回应。如果一个请求主要耗在 blocked 或 dns 上,问题在页面或网络,而不在服务器。见首字节时间。
怎么导出 HAR 文件
各主流浏览器的步骤差不多:
- 打开开发者工具(F12,Mac 上是 Cmd+Option+I),切到 Network(网络) 面板。
- 勾选 Preserve log(保留日志),页面跳转后请求也不会被清掉。
- 复现问题:刷新页面,按步骤操作一遍。
- 导出:在请求列表上右键(或点下载图标),选 Save all as HAR / 导出 HAR。
新版 Chrome 默认导出去敏版本,不包含 Cookie 和授权头;要导出包含敏感数据的版本,需要另外打开一个设置。各浏览器的具体步骤和发送前要检查什么,见怎么导出 HAR 文件。
HAR 文件含有敏感数据
完整的 HAR 文件可能包含浏览器收发的一切:
- Cookie 和会话令牌,如果还有效,别人可以借此冒充你
- 授权头和 API 密钥
- 表单数据,包括录制期间在输入框里打的任何内容
- 个人数据,出现在 URL、请求体和响应里
发送之前:能用去敏导出就用;在无痕窗口里用测试账号录制;录完退出登录,让会话 Cookie 失效;用文本编辑器打开文件,搜一下令牌和邮箱。只通过官方渠道发给你信任的技术支持团队。
HAR 文件怎么帮你排查统计问题
统计没有数据、数据偏少或重复时,HAR 文件能看出浏览器实际做了什么:
- 脚本加载了吗? 找统计脚本的请求(TapCub 是
client.js)和它的状态。 - 数据发出去了吗? 找采集请求(TapCub 是发往脚本同源的 POST
/api/v1/pulse)。没有这个请求,说明事件根本没离开浏览器。 - 被拦截了吗? 显示为被拦截的请求,通常是广告屏蔽器或内容安全策略挡住了,见广告屏蔽器会拦截 TapCub 吗。
- 服务器怎么回的? TapCub 的采集端对入库的请求和被丢弃的请求(比如域名没登记)都返回 202,所以要结合实时报表一起看,见检查安装。
- 有没有发了两次? 每次浏览有两个采集请求,通常是代码装了两遍。
查看 HAR 文件的工具
- 浏览器开发者工具可以把 HAR 导入 Network 面板,用熟悉的界面查看。
- Google 管理工具箱里的 HAR Analyzer 能可视化耗时,也能隐去部分字段。
- 任何 JSON 查看器或文本编辑器都能用来搜索。
参考资料
- W3C Web Performance Working Group. HTTP Archive (HAR) format.
- Odvarko, J. HAR 1.2 spec.
- Chrome for Developers. Network features reference: save all network requests to a HAR file.
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
