我在python中設置HTTP代理以過濾Web內容。我在StackOverflow上找到了一個good example,它正好使用Twisted。但是,我需要另一個代理才能訪問網站。所以,代理需要將請求轉發給另一個代理。使用twisted.web.proxy這樣做的最好方法是什麼?扭曲 - 將代理請求轉發到另一個代理(代理鏈)
我發現a related question需要類似的東西,但是從反向代理。
我最好的猜測是,應該可以通過修改或繼承twisted.web.proxy.ProxyClient
以連接到下一個代理而不是直接連接到Web來構建鏈接代理。不幸的是,我沒有找到關於如何做到這一點的文檔中的任何線索。
我到目前爲止(cite)代碼:
from twisted.python import log
from twisted.web import http, proxy
class ProxyClient(proxy.ProxyClient):
def handleResponsePart(self, buffer):
proxy.ProxyClient.handleResponsePart(self, buffer)
class ProxyClientFactory(proxy.ProxyClientFactory):
protocol = ProxyClient
class ProxyRequest(proxy.ProxyRequest):
protocols = dict(http=ProxyClientFactory)
class Proxy(proxy.Proxy):
requestFactory = ProxyRequest
class ProxyFactory(http.HTTPFactory):
protocol = Proxy
portstr = "tcp:8080:interface=localhost" # serve on localhost:8080
if __name__ == '__main__':
import sys
from twisted.internet import endpoints, reactor
log.startLogging(sys.stdout)
endpoint = endpoints.serverFromString(reactor, portstr)
d = endpoint.listen(ProxyFactory())
reactor.run()