aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShadab Zafar <dufferzafar0@gmail.com>2016-03-04 01:01:16 +0530
committerShadab Zafar <dufferzafar0@gmail.com>2016-03-04 01:01:16 +0530
commit01a99f2b252c2a4b467d26c795173a026df6d4d7 (patch)
tree59df87b9290309da07a0596637813c87ac1d7dab
parentec61cfddfd284a13d7bcf2807ba2e95c1a7f1d51 (diff)
downloadmitmproxy-01a99f2b252c2a4b467d26c795173a026df6d4d7.tar.gz
mitmproxy-01a99f2b252c2a4b467d26c795173a026df6d4d7.tar.bz2
mitmproxy-01a99f2b252c2a4b467d26c795173a026df6d4d7.zip
Handle the case of correct json content-type but malformed body
-rw-r--r--mitmproxy/flow_export.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/mitmproxy/flow_export.py b/mitmproxy/flow_export.py
index f5b3e2ec..49e2d704 100644
--- a/mitmproxy/flow_export.py
+++ b/mitmproxy/flow_export.py
@@ -56,8 +56,9 @@ def python_code(flow):
data = ""
if flow.request.body:
- if is_json(flow.request.headers):
- data = json.dumps(json.loads(flow.request.body), indent=4)
+ json_obj = is_json(flow.request.headers, flow.request.body)
+ if json_obj:
+ data = json.dumps(json_obj, indent=4)
data = "\njson = %s\n" % data
args += "\n json=json,"
else:
@@ -81,8 +82,12 @@ def raw_request(flow):
return data
-def is_json(headers):
+def is_json(headers, content):
if headers:
ct = parse_content_type(headers.get("content-type", ""))
- return ct and "%s/%s" % (ct[0], ct[1]) == "application/json"
+ if ct and "%s/%s" % (ct[0], ct[1]) == "application/json":
+ try:
+ return json.loads(content)
+ except ValueError:
+ return False
return False