aiohttp はリクエストオプションを通じて HTTP プロキシのサポートを文書化しています。SOCKS エンドポイントには SOCKS を話す実装が必要です。プロキシ URL のポートを 1080 に変更しても、その実装は得られません。

async 関数の内部では、保守されている aiohttp-socks プロジェクトが提供するコネクタを使用します:

import aiohttp
from aiohttp_socks import ProxyConnector

connector = ProxyConnector.from_url('socks5://203.0.113.10:1080')
async with aiohttp.ClientSession(connector=connector) as session:
    async with session.get('https://example.com/') as response:
        body = await response.read()

これは、コネクタパッケージがすでに利用可能で、アプリケーション内の aiohttp バージョンと互換性があることを前提としています。エンドポイントは例示です。SOCKS5 プロキシリストはコネクタ URL の公開候補を提供します。実際のワークロードに合わせてタイムアウトと応答サイズのポリシーを設定してください。

古い回答はさまざまなパッケージとコネクタ名に言及しています。aiosocks、aiosocksy、aiohttp-socks は相互に置き換え可能なインポートパスではありません。実際に使用するパッケージの要件と例を読んでください。あるプロジェクトのクラスを別のプロジェクトの引数と組み合わせると、プロキシ接続を試みる前に失敗することがあります。

コネクタとセッションの寿命を一緒に保ち、重要な箇所ではホスト名解決の動作を確認してください。SOCKS URL を無関係な HTTP プロキシオプションに渡しても、コネクタの文書化された経路の代わりにはなりません。

関連記事