HAR 文件分析器

在浏览器里打开 Chrome、Firefox、Safari 导出的 HAR 文件:可排序的请求瀑布图、请求详情与 cURL、慢请求与失败请求,并导出去掉 Cookie、令牌和密码的脱敏副本。文件不上传。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
把 .har 文件拖到这里,或点击选择 也可以用 Ctrl+V(⌘V)粘贴 HAR JSON。文件只在本机读取,不会上传。
Chrome / Edge:打开开发者工具的 Network(网络)面板,复现问题后点 Export HAR (sanitized)。从 Chrome 130 起,这个导出不含 Cookie、Set-Cookie 和 Authorization 请求头;需要包含时,先在 Settings > Preferences > Network 勾选 Allow to generate HAR with sensitive data,再长按导出按钮选 Export HAR (with sensitive data)。Firefox:在请求列表上右键,选导出 HAR 的菜单项(英文界面为 Save All As HAR)。Safari:用网页检查器「网络」标签页的导出按钮。 HAR 是带 log.entries 数组的 JSON,log.version 须为 1.x。文件最大 300 MB。打不开时会说明原因:文件为空、JSON 错误所在的行列、不是 HAR 的 JSON 或不支持的版本;当前显示的文件保留。打开、敏感数据扫描、脱敏和 cURL 都拆成小段执行,期间页面仍响应点击;「取消」可停止打开新文件(当前显示的文件保留)或停止正在进行的导出。在 Apple M1 Max 的 Chrome 上,68 MB、13,253 个请求的 HAR 约 0.7 秒打开,脱敏导出约 2.7 秒。

文件只在这个标签页里读取,不会上传,离开页面后也不会保存。

示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

脱敏前后对照

示例 HAR 是一份按 Chrome「含敏感数据」格式写的模拟抓包。脱敏后,登录请求的 Set-Cookie、请求体和响应体变成:

set-cookie: session=[redacted]; Path=/; Secure; HttpOnly; SameSite=Lax
{"email":"shopper@example.com","password":"[redacted]","remember":true}
{"user":{"id":42,"name":"Demo Shopper"},"access_token":"[redacted]","expires_in":3600}

Cookie 名称和 Secure、HttpOnly、SameSite 属性保留,排查「登录后掉线」这类问题时往往就靠它们。下一个请求在 URL 和请求头里各带一次令牌:

https://api.example.com/v1/orders?page=1&access_token=[redacted]
authorization: Bearer [redacted]

同一个会话 ID 还出现在账户页的 HTML 和统计请求的 sid= 参数里,也都被替换:导出时会在整个文件里查找每一个去掉的值。导出后工具把文件重新解析一遍,报告里写明「去掉的值一个都没剩下」才算完成。

邮箱这类个人信息不是凭据,默认保留;报告会写出还保留了几个请求体和响应体。需要时在「另外脱敏这些名称」里填 email、phone,或直接删除请求体 / 响应体。去掉的具体规则见工具里的说明;令牌格式(JWT、Bearer、GitHub / Stripe / AWS 等密钥)与 API Key 脱敏工具 用同一套规则。

场景:把 HAR 导入阿里云 PTS 压测

阿里云性能测试 PTS 可以直接用 HAR 生成压测场景,按《使用HAR文件快速开始压测》的说明,上传的 HAR 必须小于 10 MB,导入后每个请求都会成为一个压测 API。浏览器导出的文件常常比这大,而且混着图片、字体和第三方统计请求。

先在「请求」里输入接口域名筛选,再在「脱敏与导出」里选「当前显示的」并勾选「删除响应体」,压测用不到响应体。用示例文件算一下:

full sample: 27334 bytes
api.example.com only, response bodies removed: 8744 bytes (3 requests)

注意压测会照原样重放 HAR 里的 Cookie 和 Authorization。不要把自己账号的会话上传到压测平台:导出脱敏副本,再按 PTS 文档《使用Cookie模拟登录场景》为测试账号单独配置登录态。

瀑布图怎么读

每根条形从请求的 startedDateTime 开始,最多分七段,对应 HAR 1.2 的 timings:排队 / 阻塞(blocked)、DNS、连接、TLS(ssl)、发送、等待(首字节时间)、接收。值为 -1 表示没有这个阶段,例如复用的连接没有 DNS 和连接时间,显示为「不适用」。两条竖线是 DOMContentLoaded 和 load。

Chrome 和 Safari 按规范把 TLS 算在 connect 里,条形把这一段拆成 TCP 和 TLS;Firefox 把两者分开记,time 里两者都算:

connect 18 ms + ssl 21 ms (time 151 ms = sum of all seven)

只按规范计算的工具会把这类 Firefox 条目的条形画短 21 毫秒,并把每个 HTTPS 请求都标成时间对不上。传输量取 Chrome / Safari 的 _transferSize;Firefox 把整个传输量写在 bodySize 里,工具按它读取。

和其他 HAR 工具的区别

2026-10-01 用同一个文件实测(示例 HAR 加一个带 x-session-id 请求头、在 3,200 个字符之后嵌套 refresh_token 的请求),在各工具的脱敏输出里查找 7 个凭据:

工具输出里还剩下的
toolbox365.cn「HAR 文件在线分析」的脱敏导出URL 里的 access_token(含 HTTP/2 的 :path 请求头)、sid= 参数里的会话 ID、x-session-id;请求体和响应体整段删除
Google Admin Toolbox HAR Analyzer 的脱敏按钮请求体里的密码、x-session-id、嵌套的 refresh_token、HTML 和 sid= 里的会话 ID
Chrome「Export HAR (sanitized)」除 Cookie、Set-Cookie、Authorization 三个请求头外全部保留
本工具(默认选项)7 个都已替换;邮箱保留,报告写明保留的请求 / 响应体数量

三者都没有把文件传到服务器。整段删除请求体最省事,但出问题的往往正是某个接口的响应内容;本工具默认只替换凭据,响应体可以选择删除。

FAQ

怎么从浏览器导出 HAR?

Chrome / Edge:打开开发者工具的 Network(网络)面板,复现问题后点工具栏的 Export HAR (sanitized)。从 Chrome 130 起,这个默认导出不含 Cookie、Set-Cookie 和 Authorization 请求头;需要包含时,先在 Settings > Preferences > Network 勾选 Allow to generate HAR with sensitive data,再长按导出按钮选 Export HAR (with sensitive data)。Firefox 在请求列表上右键,选导出 HAR 的菜单项(英文界面为 Save All As HAR);Safari 用网页检查器「网络」标签页的导出按钮。

Chrome 导出的 sanitized 版本能直接发给别人吗?

不一定。Chrome 只删掉三个请求头和 Cookie 列表,URL 里的 token、请求体里的密码、CSRF 和 API Key 之类的自定义请求头、响应体都还在。把文件拖进来看「文件中的敏感数据」卡片,上面列出还剩多少。

HAR 会被上传吗?

不会。文件只在当前标签页里读取和解析,页面不会发出任何带文件内容的请求,也不会保存。这个工具页不加载 Google Analytics 和 AdSense。点「打开其他文件」或刷新页面即可从内存中清掉。

为什么 entry.time 和各阶段之和对不上?

HAR 1.2 规定 entry.time 等于 blocked、dns、connect、send、wait、receive 之和,ssl 算在 connect 里。Firefox 的 connect 只记 TCP,ssl 单独计入总和。工具会按每个条目实际对得上的算法来画条形;相差超过 1.5 毫秒的条目列在「发现」里,「时序」标签页写出差值。

能只导出一部分请求吗?

能。在「请求」里按 URL 关键字、状态码类别和资源类型筛选,然后在「脱敏与导出」选「当前显示的 N 个」。导出的是标准 HAR 1.2 文件,DevTools 可以重新导入。「复制为 cURL」也按同一筛选结果生成。