【发布时间】:2014-04-29 13:58:35
【问题描述】:
我正在开发一个简单的 HTTPS 代理(用 Python 编写),它接收 POST/GET 请求/响应,应用一些转换,最后将结果转发给接收者。 我需要以“流”方式处理分块编码的请求/响应,这意味着一旦收到一个块,代理就会对其进行转换并将其转发给接收者。
在决定支持分块编码请求之前,我一直在使用 mitmproxy http://mitmproxy.org/,它运行良好。不幸的是,我注意到它会等到收到整个正文后才让我处理响应/请求。
如何实现支持分块编码请求/响应的代理?你们有没有人做过这样的事情?
谢谢
编辑:关于我的用例的更多信息
我需要处理 POST 请求和 GET 响应。
在 POST 请求中,我收到一个 JSON 对象,我必须加密它的一些值。
在 GET 响应中,我收到一个 JSON 对象,我必须解密它的一些值。
到目前为止,以下代码已经完美运行:
def handle_request(self, r):
if(r.method=='POST'):
// encryption of r.get_form_urlencoded()
def handle_response(self, r):
if(r.request.method=='GET'):
// decryption of r.content
我怎样才能对单个块做同样的事情?
编辑:更新
在评估了不同的解决方案后,我决定选择 Squid(代理)+ICAP(内容适配)。
我已经成功配置了 Squid,并且性能非常好。不幸的是,我找不到合适的 ICAP 服务器(如果可能的话,在 Python 中)进行内容调整(修改)。我认为这个https://github.com/netom/pyicap 可以完成这项工作,但看起来它不会读取 myPOST 请求的正文。
你们知道我可以与 Squid 一起使用的 Python ICAP 服务器吗?
谢谢
【问题讨论】: