diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2016-09-07 12:05:05 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2016-09-07 12:11:10 +1200 |
commit | 6c970cfd4c61defed0bfea08b5c653c5a7c704ca (patch) | |
tree | e393f49f9a0d93648468e7d75129bdf2794d080d | |
parent | 9abdd3a8d9189ca300221e5acde4a8190804abd7 (diff) | |
download | mitmproxy-6c970cfd4c61defed0bfea08b5c653c5a7c704ca.tar.gz mitmproxy-6c970cfd4c61defed0bfea08b5c653c5a7c704ca.tar.bz2 mitmproxy-6c970cfd4c61defed0bfea08b5c653c5a7c704ca.zip |
Fix byte/string comparison error in server playback
-rw-r--r-- | mitmproxy/builtins/serverplayback.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/mitmproxy/builtins/serverplayback.py b/mitmproxy/builtins/serverplayback.py index 6b05173b..fe56d68b 100644 --- a/mitmproxy/builtins/serverplayback.py +++ b/mitmproxy/builtins/serverplayback.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, print_function, division from six.moves import urllib import hashlib +from netlib import strutils from mitmproxy import exceptions, flow, ctx @@ -38,10 +39,13 @@ class ServerPlayback(object): if not self.options.replay_ignore_content: form_contents = r.urlencoded_form or r.multipart_form if self.options.replay_ignore_payload_params and form_contents: - key.extend( - p for p in form_contents.items(multi=True) - if p[0] not in self.options.replay_ignore_payload_params - ) + params = [ + strutils.always_bytes(i) + for i in self.options.replay_ignore_payload_params + ] + for p in form_contents.items(multi=True): + if p[0] not in params: + key.append(p) else: key.append(str(r.raw_content)) @@ -63,7 +67,9 @@ class ServerPlayback(object): v = r.headers.get(i) headers.append((i, v)) key.append(headers) - return hashlib.sha256(repr(key).encode("utf8", "surrogateescape")).digest() + return hashlib.sha256( + repr(key).encode("utf8", "surrogateescape") + ).digest() def next_flow(self, request): """ |