Skip to content

Instantly share code, notes, and snippets.

@zvodd
Forked from tomatohater/parsehar.py
Last active May 6, 2024 01:56
Show Gist options
  • Save zvodd/78d94e2211de96a4ca5d107c0709c3ec to your computer and use it in GitHub Desktop.
Save zvodd/78d94e2211de96a4ca5d107c0709c3ec to your computer and use it in GitHub Desktop.
parsehar.py - Reads a har file from the filesystem, converts to CSV, then dumps to stdout.
"""Reads a har file from the filesystem, converts to CSV, then dumps to
stdout.
"""
import argparse
import json
from urllib.parse import urlparse
def main(harfile_path):
"""Reads a har file from the filesystem, converts to CSV, then dumps to
stdout.
"""
harfile = open(harfile_path, 'rb')
harfile_json = json.load(harfile)
i = 0
for entry in harfile_json['log']['entries']:
i = i + 1
url = entry['request']['url']
urlparts = urlparse(entry['request']['url'])
size_bytes = entry['response']['bodySize']
size_kilobytes = float(entry['response']['bodySize'])/1024
mimetype = 'unknown'
if 'mimeType' in entry['response']['content']:
mimetype = entry['response']['content']['mimeType']
print ('{},"{}",{},{},{},{}'.format(i, url, urlparts.hostname, size_bytes,
size_kilobytes, mimetype))
if __name__ == '__main__':
argparser = argparse.ArgumentParser(
prog='parsehar',
description='Parse .har files into comma separated values (csv).')
argparser.add_argument('harfile', type=str, nargs=1,
help='path to harfile to be processed.')
args = argparser.parse_args()
main(args.harfile[0])
@zvodd
Copy link
Author

zvodd commented Aug 12, 2019

Python 3.7 updated
Fix errors related to decoding unicode. i.e. lets json decode handle it with binary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment