3

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 の子クラスを書かずにリクエストを行う方法を知っている人はいますか?

4

2 に答える 2