你尝试过 aiosocks 吗?
import asyncio
import aiosocks
from aiosocks.connector import SocksConnector
conn = SocksConnector(proxy=aiosocks.Socks5Addr(PROXY_ADDRESS, PROXY_PORT), proxy_auth=None, remote_resolve=True)
session = aiohttp.ClientSession(connector=conn)
async with session.get('http://python.org') as resp:
assert resp.status == 200
aiosocks 不适用于较新版本的 aiohttp 3.+。 您可以使用aiosocksy来实现socks代理。
要检查 aiosocksy 是否正常工作,您可以查看以下代码示例https://stackoverflow.com/a/53657536/6735546
正确答案不再有效。
从 aiosocks.connector 导入 ProxyConnector 而不是 SocksConnector
import aiohttp
import aiosocks
from aiosocks.connector import ProxyConnector
conn = ProxyConnector(remote_resolve=True)
async with aiohttp.ClientSession(connector=conn) as session:
async with session.get("http://python.org", proxy=f"{PROXY_ADDRESS}:{PROXY_PORT}") as resp:
assert resp.status == 200