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 で、socks プロキシを介してねじれた 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 の子クラスを書かずにリクエストを行う方法を知っている人はいますか?