import gzip
def httpcanary_decompress(body):
"""
Args:
body (bytes): 二进制文本
Returns:
responseBody (bytes) gzip解密后的二进制文本
"""
index = body.index(b"\r\n\r\n") + 4
responseBody = body[index:]
if responseBody[:2] == b'\x1f\x8b': # Magic code of gzip
responseRawBody = responseBody
else:
responseRawBody = b''
while True:
index = responseBody.index(b'\r\n')
if index == 0:
responseBody = responseBody[index + 2:]
continue
length = int(responseBody[:index].decode(), 16)
if length == 0:
break
responseBody = responseBody[index + 2:]
responseRawBody += responseBody[:length]
responseBody = responseBody[length:]
responseBody = gzip.decompress(responseRawBody)
return responseBody