Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #!/usr/bin/env python
  2. """
  3. Converts Internet Explorer 'capture network traffic' XML to a HAR file.
  4.  
  5. Turns out that XML is just a HAR file anyways, but in XML form. So this
  6. just converts it to JSON, and Bob's your uncle.
  7.  
  8. Requires Python 2.7+ and LXML.
  9. """
  10. from __future__ import unicode_literals
  11.  
  12. import argparse
  13. import json
  14. from lxml import objectify
  15. import sys
  16.  
  17. list_things = {
  18. 'pages',
  19. 'entries',
  20. 'cookies',
  21. 'queryString',
  22. 'headers',
  23. }
  24.  
  25. def xml_to_dict(element):
  26. if element.tag in list_things:
  27. return [xml_to_dict(e) for e in element.getchildren()]
  28. else:
  29. if element.getchildren():
  30. return {e.tag: xml_to_dict(e) for e in element.getchildren()}
  31. else:
  32. data_type = type(element.pyval)
  33. return data_type(element.pyval)
  34.  
  35. def main():
  36. parser = argparse.ArgumentParser(description="Convert IE's crazy XML-HAR into a real HAR file")
  37. parser.add_argument('infile', type=argparse.FileType('r'), default=sys.stdin)
  38. parser.add_argument('outfile', type=argparse.FileType('w'), default=sys.stdout)
  39. args = parser.parse_args()
  40.  
  41. tree = objectify.parse(args.infile)
  42. root = tree.getroot()
  43. d = {root.tag: xml_to_dict(root)}
  44. json.dump(d, args.outfile, indent=2, sort_keys=True)
  45.  
  46.  
  47. if __name__ == '__main__':
  48. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement