From c2d0910e593faf34bae37f5c9b5cfaae509bdf8c Mon Sep 17 00:00:00 2001 From: Tai Dickerson Date: Tue, 14 Jun 2016 12:47:10 -0400 Subject: [PATCH] Make har_extractor.py output HAR 1.2 spec-compliant HAR files were failing to load in harviewer (http://www.softwareishard.com/har/viewer/) due to: - ISO 8601 dates for startedDateTime missing timezone (http://www.softwareishard.com/blog/har-12-spec/#pages) -- Used UTC but could add detection of default system timezone if desired - pages object missing pageTimings (http://www.softwareishard.com/blog/har-12-spec/#pageTimings) -- Used {} because all child fields are optional --- examples/har_extractor.py | 4 +++- test/mitmproxy/data/har_extractor.har | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/examples/har_extractor.py b/examples/har_extractor.py index c21f1a8f7..d6b50c213 100644 --- a/examples/har_extractor.py +++ b/examples/har_extractor.py @@ -4,6 +4,7 @@ """ import six import sys +import pytz from harparser import HAR from datetime import datetime @@ -120,7 +121,7 @@ def response(context, flow): full_time = sum(v for v in timings.values() if v > -1) started_date_time = datetime.utcfromtimestamp( - flow.request.timestamp_start).isoformat() + flow.request.timestamp_start).replace(tzinfo=pytz.timezone("UTC")).isoformat() request_query_string = [{"name": k, "value": v} for k, v in flow.request.query or {}] @@ -174,6 +175,7 @@ def response(context, flow): "startedDateTime": entry['startedDateTime'], "id": page_id, "title": flow.request.url, + "pageTimings": {} }) ) context.HARLog.set_page_ref(flow.request.url, page_id) diff --git a/test/mitmproxy/data/har_extractor.har b/test/mitmproxy/data/har_extractor.har index 6b5e29945..d80dc55ff 100644 --- a/test/mitmproxy/data/har_extractor.har +++ b/test/mitmproxy/data/har_extractor.har @@ -10,15 +10,16 @@ }, "pages": [ { - "startedDateTime": "1993-08-24T14:41:12", + "startedDateTime": "1993-08-24T14:41:12+00:00", "id": "autopage_1", - "title": "http://address:22/path" + "title": "http://address:22/path", + "pageTimings": {} } ], "entries": [ { "pageref": "autopage_1", - "startedDateTime": "1993-08-24T14:41:12", + "startedDateTime": "1993-08-24T14:41:12+00:00", "cache": {}, "request": { "cookies": [],