python-扭曲的Web客户端可以通过SOCKS代理发出请求吗?
作者:互联网
我正在编写一个使用twisted.web.client.Agent发出https请求的python程序.我想有选择地通过Tor发出这些请求,如果将socks5代理设置为127.0.0.1:9050,我应该能够做到.
我找不到有关使用袜子代理的任何扭曲文档,但可以找到有关使用HTTP代理的信息:https://twistedmatrix.com/documents/current/web/howto/client.html#auto9
我还在另一个项目ooni-probe中找到了一些代码,这些代码似乎正在通过袜子代理发出扭曲的Web请求.这是代理商:
https://gitweb.torproject.org/ooni-probe.git/blob/HEAD:/ooni/templates/httpt.py#l65
self.control_agent = Agent(reactor, sockshost="127.0.0.1",
socksport=config.tor.socks_port)
但是该代理实际上是ooni.utils.txagentwithsocks.Agent,继承自twisted.web.client.Agent:
https://gitweb.torproject.org/ooni-probe.git/blob/HEAD:/ooni/utils/txagentwithsocks.py#l157
那里的请求方法看起来像这样:
def request(self, method, uri, headers=None, bodyProducer=None):
if (uri.startswith('shttp') or uri.startswith('httpo')) and not HTTPConnectionPool:
log.err("Requests over SOCKS are supported only with versions of Twisted >= 12.1.0")
raise UnsupportedTwistedVersion
return client.Agent.request(self, method, uri, headers, bodyProducer)
似乎Twisted> = 12.1.0支持袜子代理,对吧?有谁知道如何通过请求发出请求,而无需编写twisted.web.client.Agent的子类?
解决方法:
Twisted中的twisted.web.client.Agent API不支持SOCKS.这是一项计划中但尚未实现的功能.
如果您想加快进度,可以鼓励OONI项目在上游促进其实施.
标签:tor,proxy,twisted,socks,python 来源: https://codeday.me/bug/20191030/1971797.html