Маршрутизация SOCKS в aiohttp с aiohttp-socks
Используйте совместимый коннектор с поддержкой SOCKS, а не копируйте старый пример прокси aiohttp с удалёнными классами коннектора.
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 не являются взаимозаменяемыми путями импорта. Читайте требования и пример для пакета, который действительно используется. Сочетание класса одного проекта с аргументами другого может завершиться ошибкой ещё до попытки подключения к прокси.
Держите коннектор и время жизни сессии вместе и проверяйте поведение разрешения имён хостов там, где это важно. Передача URL SOCKS несвязанному параметру HTTP-прокси не заменяет документированный путь коннектора.