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项目在上游促进其实施.

上一篇:python – Bin大小的seaborn jointplot


下一篇:python – 使用tor代理时的多线程爬虫