mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-26 18:18:25 +00:00
Tweak encoding behaviour
- Don't fail to identity encoding when an unknown encoding is specified. - Don't constrain encodings. I want to try to modify traffic as little as possible by default. - When decoding, delete content-encoding header rather than set it to "identity" - Refuse to decode/encode when there is an existing but unknown content-encoding header.
This commit is contained in:
parent
bb6ec29b18
commit
8cc0469ee7
@ -8,21 +8,25 @@ __ALL__ = ["ENCODINGS"]
|
||||
|
||||
ENCODINGS = set(["identity", "gzip", "deflate"])
|
||||
|
||||
def decode(encoding, content):
|
||||
def decode(e, content):
|
||||
encoding_map = {
|
||||
"identity": identity,
|
||||
"gzip": decode_gzip,
|
||||
"deflate": decode_deflate,
|
||||
}
|
||||
return encoding_map.get(encoding, identity)(content)
|
||||
if e not in encoding_map:
|
||||
return None
|
||||
return encoding_map[e](content)
|
||||
|
||||
def encode(encoding, content):
|
||||
def encode(e, content):
|
||||
encoding_map = {
|
||||
"identity": identity,
|
||||
"gzip": encode_gzip,
|
||||
"deflate": encode_deflate,
|
||||
}
|
||||
return encoding_map.get(encoding, identity)(content)
|
||||
if e not in encoding_map:
|
||||
return None
|
||||
return encoding_map[e](content)
|
||||
|
||||
def identity(content):
|
||||
"""
|
||||
|
@ -588,8 +588,6 @@ class FlowMaster(controller.Master):
|
||||
f.request.anticache()
|
||||
if self.anticomp:
|
||||
f.request.anticomp()
|
||||
else:
|
||||
f.request.constrain_encoding()
|
||||
|
||||
if self.server_playback:
|
||||
pb = self.do_server_playback(f)
|
||||
|
@ -134,11 +134,14 @@ class HTTPMsg(controller.Msg):
|
||||
Content-Encoding header and changing Content-Encoding header to
|
||||
'identity'.
|
||||
"""
|
||||
ce = self.headers["content-encoding"]
|
||||
if not ce or ce[0] not in encoding.ENCODINGS:
|
||||
return
|
||||
self.content = encoding.decode(
|
||||
(self.headers["content-encoding"] or ["identity"])[0],
|
||||
ce[0],
|
||||
self.content
|
||||
)
|
||||
self.headers["content-encoding"] = ["identity"]
|
||||
del self.headers["content-encoding"]
|
||||
|
||||
def encode(self, e):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user