Python 如何在转发到客户端之前修改从代理套接字/缓冲区捕获的HTTP响应中的压缩/编码内容
我们希望在将HTTP响应发送回客户端之前捕获并修改代理内部的HTTP响应。我们正在使用python代理()。当我们从代理套接字/缓冲区读取HTTP流时,HTTP内容/正文被编码/压缩。我们需要对HTTP内容/正文进行解压缩/解码,修改内容并对其进行压缩/编码,然后将其返回给代理,以将修改后的响应转发回客户端。我们如何使用python实现这一点?任何帮助都将不胜感激 注意:我们不能对URL进行任何直接调用,因为此代码将在代理内运行Python 如何在转发到客户端之前修改从代理套接字/缓冲区捕获的HTTP响应中的压缩/编码内容,python,http,encoding,proxy,gzip,Python,Http,Encoding,Proxy,Gzip,我们希望在将HTTP响应发送回客户端之前捕获并修改代理内部的HTTP响应。我们正在使用python代理()。当我们从代理套接字/缓冲区读取HTTP流时,HTTP内容/正文被编码/压缩。我们需要对HTTP内容/正文进行解压缩/解码,修改内容并对其进行压缩/编码,然后将其返回给代理,以将修改后的响应转发回客户端。我们如何使用python实现这一点?任何帮助都将不胜感激 注意:我们不能对URL进行任何直接调用,因为此代码将在代理内运行 import gzip from io import BytesI
import gzip
from io import BytesIO
def compress(data):
if type(data) != type(b'bytes'):
data = bytes(data, 'UTF-8')
return gzip.compress(data)
def decompress(data):
with gzip.GzipFile(fileobj=BytesIO(data)) as fh:
try:
unzipped = fh.read()
except struct.error:
return None
return unzipped
假设有几件事:
aa到目前为止,您尝试了什么?:)到目前为止,我们尝试了以下方法:将HTTP内容写入文件,读取压缩的HTTP正文/内容,并将内容传递给解压函数,但解压数据失败。我猜我们缺少要解压缩的二进制文件的正确开始/结束的提取。一个好主意是发布失败的相关代码:)尝试查找如何从另一个库(python代理)中修改数据,感谢Torred的及时响应。我们面临的挑战是,如何提取HTTP正文或HTTP内容的压缩部分(压缩字节的开始/结束),删除标头,然后将该内容传递给解压缩函数。是的,内容编码是gzip。我们在Python代理(我们在这里使用)中没有看到任何库来提取解压缩的数据。我们从缓冲区/套接字读取原始http响应数据。第三点,是的,我们也看到内容长度被称为“分块”。不知道我们该怎么处理this@user1109998如果您已设法将HTTP内容写入文件,那么应该是
头,data=data.split('\r\n\r\n');解压缩(数据)
,就这么简单。明白你的意思了,太好了!我现在就尝试一下,然后发布我的回复。很抱歉被打扰了amataure@user1109998嘿,别难过:)这是个有道理的问题!