ScriptHunter
ScriptHunter
  • 发布:2026-09-14 17:11
  • 更新:2026-09-14 17:11
  • 阅读:11

HAR 文件怎么打开?别人发来的抓包文件怎么接着分析

分类:快应用
iOS

'''同事发来一个文件:接口报错.har,问"你帮我看看这个请求为啥 500"。文件收到了,双击却不知道用什么打开——浏览器拖进去没反应,记事本打开是一大坨 JSON,翻半天才找到那条出错的请求。这类场景在联调里出现得不少:抓的人有抓的工具,收的人拿到 HAR 文件或 pcap 文件,第一步就卡在"用什么打开"。

要解决的不只是"打开"。文件打开之后,怎么看懂内容、怎么和手头的成功请求做对比、怎么再交给下一个环节,是一条完整的链。下面按"拿到文件之后"的顺序,把这条链走一遍。

先认清手上的是什么文件

HAR 是已经解析好的请求清单。 全称 HTTP Archive,本质是一个 JSON 文件——浏览器 F12 的 Network 面板右键导出,Fiddler 也能导,每个请求的方法、URL、请求头、响应头、耗时都按结构化字段存在里面。它记录的是应用层的事:这个请求发了什么、回了什么。

HAR 的骨架长这样:

{  
  "log": {  
    "version": "1.2",  
    "entries": [  
      {  
        "request":  { "method": "POST", "url": "https://api.example.com/order", "headers": [] },  
        "response": { "status": 500, "content": { "text": "...", "encoding": "base64" } }  
      }  
    ]  
  }  
}

注意 response.content 里的字段——encoding: base64 表示这段内容是二进制或压缩数据,原样看是乱的,得先解码。这个坑后面还会碰到。

pcap / pcapng 是网卡上的原始数据包。 Wireshark、tcpdump 抓完存的就是它,二进制格式,记录的是从网卡视角看到的原始包——一个 HTTP 请求在它眼里是若干 TCP 段,想看懂得先按连接把包重组起来。所以 pcap 的"打开"和 HAR 完全不是一回事:HAR 打开是看请求,pcap 打开先要解决"哪些包属于同一条连接、这条连接是不是 HTTPS 密文"。

还有一类是各家工具的私有会话格式:Charles 的 .chls、Fiddler 的 .saz,只能用原工具打开。给别人传文件时,导出成 HAR 比传私有格式通用。

把文件导进来

拿到文件,打开方式无非两条:找对应格式的工具,或者找一个都能吃下的。

分头解决的路线是:HAR 拖进 Chrome DevTools 的 Network 面板能看,pcap 交给 Wireshark,私有格式回原工具。这套分工能用,但文件一多就散——同事可能发来 HAR,也可能发来 Wireshark 存的 pcapng,得先判断"这归谁管"。

另一条路是用 TraceEagle 的"导入会话",HAR 1.2、.pcap / .pcapng、常见抓包工具导出的会话文件都从这一个入口进来。导入后请求就躺在列表里,跟本机抓的没有区别:切视图、看解码、查主机档案、拿去对比,都在同一套界面里。上次看同事给的 HAR 文件就是这么处理的,不用先想"该装什么软件",导进来直接看。

打开之后:三步读明白

导入只是开始,真正要回答的是"这个请求为什么出错"。

看内容。 先把乱码清零。HAR 里的 body 常是 base64 或压缩过的(开头那个 encoding: base64 就是),pcap 里非 HTTP 的流量本身是一堆原始字节。自动解压、自动识别格式、protobuf 免 .proto 解析、私有帧自动拆这一套在这里直接复用——导入的会话和本机抓的走同一套解码,不用因为"文件是别人抓的"就换流程。

查来源。 分析别人的包,经常要判断"这个域名、这个 IP 是什么来头"。HAR 里每个请求的主机名、pcap 里每个对端 IP,点开都有主机档案:归属地、ASN、证书信息、技术栈。查一个陌生 IP 的归属,不用对着地址段猜。

做对比。 这是导入场景里最实用的一步:同事抓的失败请求和你抓的成功请求,可以跨会话放在一起逐行比——参数、请求头、响应体哪里不一样。比"你把请求截图发我看看"来回几个回合高效得多,接口偶发失败这类问题,两份记录摆一起经常一眼出答案。

和常见工具怎么分工

这几个工具各管一段,位置挺清楚。

Chrome DevTools 看自己刚导出的 HAR 顺手,即开即用;但它开不了 pcap,也没法把两份 HAR 放一起比对。Wireshark 是 pcap 的专业户,包级分析(重传、时延、连接状态)没有替代品,代价是看 HTTP 内容要自己 follow stream,遇到 HTTPS 还得先有解密密钥。Charles、Fiddler 开自家会话最舒服,能改能重放,跨格式就弱一些。

TraceEagle 的位置在中间:HAR 和 pcap 都能进,进来之后解码、档案、对比、再导出一路通。实际用法多是组合——Wireshark 看完包级异常,把 pcap 导进来解出 HTTP 明文;或者同事用 Charles 抓的包导出 HAR,导进来和本地这份做对比。

问得最多的几件事

Chrome 导出的 HAR 怎么没有响应内容? 导出时选项没带对——浏览器的导出项里有"带内容"和"不带内容"两种,只有带内容的那份包含响应体。给别人导 HAR 文件排查问题时,记得选带内容的那种。

Wireshark 抓的 pcapng 导进来是明文还是密文? 看文件里有没有密钥。pcapng 可以把 TLS 解密密钥(SSLKEYLOGFILE 那套)一起写进文件,带了就能解出明文,没带就是原始密文,只能看包的特征。请对方导文件时,有条件的话顺手把密钥带上。

HAR 和 pcap 能互相转换吗? 不能直接转。HAR 是应用层的请求清单,pcap 是网卡层的原始包,信息不在一个层面——从 pcap 出 HAR 要先解密再完整重组,HAR 倒回 pcap 缺的是全部底层细节。两种格式都收的工具,内部是分别解析,不是转换。

同事发来的私有格式打不开怎么办? 请对方在原工具里导一份 HAR。HAR 1.2 是通用交换格式,浏览器和主流代理工具都认——你要把包发出去时,也可以照这个思路来。

收个尾

拿到抓包文件的分析路径可以固定下来:先看扩展名——.har 是应用层清单,找个能看 JSON 会话的工具或直接导进来;.pcap / .pcapng 是原始包,交给能重组连接的工具;私有格式请对方转 HAR。然后看、比、导:解码看清内容,对比找出差异,再导出交给下一个环节。

下次再收到同事发来的抓包文件,从"是 HAR 还是 pcap"判断起,后面的路就是一条直线。'''

0 关注 分享

要回复文章请先登录注册