简介

HAR(HTTP Archive format),是一种或 JSON 格式的存档格式文件,通用扩展名为 .har。Web 浏览器可以使用该格式导出有关其加载的网页的详细性能数据。

 

使用场景

在开发过程中,有的场景不好复现,比如访问速度慢,请求失败等,由于设备限制,对于我们来说精确的收集数据以及定位问题有一定难度。

比如,作为开发我们可以很熟练的按下F12查看请求,但如果是作为技术支持,没有办法长时间占用对方(客户)的电脑进行问题排查。HAR则可以帮助我们收集所有的HTTP请求


保存 HAR 文件

我们以chrome打开 www.baidu.com/ 为例 具体步骤:

  • 在菜单中打开“开发人员工具”(“菜单”>“更多工具” >“开发人员工具”),您也可以在键盘上按 F12 (或 Fn-F12)。
  • 打开“网络”标签页。
  • 在“网络”标签页的左上角,找到一个圆形按钮。 确保该按钮是红色的。如果显示灰色,请点击一次以开始 录制。
  • 开启“保留日志”**。
  • 重现问题。
  • 要保存记录的内容,请在网格上右键点击,然后选择 **“将内容保存为 HAR”。
  • 选择保存位置,该位置会生成一个名为 www.baidu.com.har 的文件。


打开 HAR 文件

  1. chrome 打开开发者工具,切换到“网络”标签页,将HAR文件托拽放入即可。
  2. 使用其他抓包工具也可以, 例如Charles,fiddler  Charles中操作流程: File > Import 选择导出的xxx.har文件即可

 

 使用Python解析har文件数据

import json
from haralyzer import HarParser



"""解析har数据"""

def main():
    har_parser = HarParser.from_file(r'D:\Users\Desktop\数据\baidu.har')
    data = har_parser.har_data
    entries = data.get('entries')
    for entry in entries:
        req = entry['request']
        url = req['url']
        if 'task/list' not in url:
            continue

        body = entry['response']
        if 'text' not in body['content']:
            continue

        content = body['content']['text']
        info = json.loads(content)
        print('解析的数据:', info)
        list = info.get('data').get('list')
        for item in list:
            print(f'渠道ID:{item["channel_id"]} 渠道名称:{item["channel_name"]} 文章标题:{item["article_title"]}')



if __name__ == '__main__':
    main()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.