如何在转发到客户端之前修改从代理套接字/缓冲区捕获的HTTP响应中的压缩/编码内容

时间:2014-04-09 06:40:07

标签: python http encoding proxy gzip

我们想要捕获&在将代理发送回客户端之前修改代理内部的HTTP响应。我们使用的是python-proxy(http://code.google.com/p/python-proxy/)。当我们从代理套接字/缓冲区读取HTTP流时,HTTP内容/主体被编码/压缩。我们需要对HTTP内容/主体进行解压缩/解码,修改内容并对其进行压缩/编码。将其返回给代理以将修改后的响应转发回客户端。我们如何使用python实现这一目标?任何帮助将不胜感激。

注意:我们无法对URL进行任何直接调用,因为此代码将在Proxy中运行。

1 个答案:

答案 0 :(得分:0)

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

假设一些事情:

  1. 内容编码是gzip
  2. 您实际上可以从代理库中检索数据
  3. 您已经以正确的方式收集数据,如果分块等,以便可以解压缩。