mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-30 03:14:22 +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"])
|
ENCODINGS = set(["identity", "gzip", "deflate"])
|
||||||
|
|
||||||
def decode(encoding, content):
|
def decode(e, content):
|
||||||
encoding_map = {
|
encoding_map = {
|
||||||
"identity": identity,
|
"identity": identity,
|
||||||
"gzip": decode_gzip,
|
"gzip": decode_gzip,
|
||||||
"deflate": decode_deflate,
|
"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 = {
|
encoding_map = {
|
||||||
"identity": identity,
|
"identity": identity,
|
||||||
"gzip": encode_gzip,
|
"gzip": encode_gzip,
|
||||||
"deflate": encode_deflate,
|
"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):
|
def identity(content):
|
||||||
"""
|
"""
|
||||||
|
@ -588,8 +588,6 @@ class FlowMaster(controller.Master):
|
|||||||
f.request.anticache()
|
f.request.anticache()
|
||||||
if self.anticomp:
|
if self.anticomp:
|
||||||
f.request.anticomp()
|
f.request.anticomp()
|
||||||
else:
|
|
||||||
f.request.constrain_encoding()
|
|
||||||
|
|
||||||
if self.server_playback:
|
if self.server_playback:
|
||||||
pb = self.do_server_playback(f)
|
pb = self.do_server_playback(f)
|
||||||
|
@ -134,11 +134,14 @@ class HTTPMsg(controller.Msg):
|
|||||||
Content-Encoding header and changing Content-Encoding header to
|
Content-Encoding header and changing Content-Encoding header to
|
||||||
'identity'.
|
'identity'.
|
||||||
"""
|
"""
|
||||||
|
ce = self.headers["content-encoding"]
|
||||||
|
if not ce or ce[0] not in encoding.ENCODINGS:
|
||||||
|
return
|
||||||
self.content = encoding.decode(
|
self.content = encoding.decode(
|
||||||
(self.headers["content-encoding"] or ["identity"])[0],
|
ce[0],
|
||||||
self.content
|
self.content
|
||||||
)
|
)
|
||||||
self.headers["content-encoding"] = ["identity"]
|
del self.headers["content-encoding"]
|
||||||
|
|
||||||
def encode(self, e):
|
def encode(self, e):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user