如何查看扭曲代理服务器发送的请求,我应该查看twisted.web.proxy的哪一部分。目的是在将dataReceived发送到目标服务器之前添加额外的标头。 例如,向所有代理请求添加一个额外的标题,如“Xzone:foo.com \ r \ n”,以便最终请求如下所示:
GET / HTTP/1.1\r
Xzone: foo.com\r
Host: bbb.com\r
User-Agent: mozilla\r
Accept: */*\r
提前感谢任何信息。
答案 0 :(得分:2)
不幸的是twisted.web.proxy
相当苛刻,并没有考虑到这种定制。但是,可以通过多种不同方式将新标头注入代理请求中。一般的想法是挂钩处理请求的其中一个步骤并修改请求标头,以便它们包含您的新标头。
例如,您可以加入ProxyRequest.process
:
from twisted.web.proxy import ProxyRequest
class ChangeSomeHeadersProxyRequest(ProxyRequest):
def process(self):
self.changeHeaders()
return ProxyRequest.process(self)
def changeHeaders(self):
# Inject an extra request header.
self.requestHeaders.addRawHeader(b"Xzone", b"foo.com")
然后将其连接到代理的其余部分:
from twisted.web.proxy import Proxy
from twisted.web.server import Site
class ChangeSomeHeadersSite(Site):
protocol = Proxy
requestFactory = ChangeSomeHeadersProxyRequest
现在像常规ChangeSomeHeadersSite
一样设置Site
。