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 не са взаимозаменяеми пътища за импортиране. Прочетете изискванията и примера за пакета, който действително се използва. Комбинирането на клас от един проект с аргументи от друг може да се провали още преди опит за връзка с прокси.
Дръжте конектора и живота на сесията заедно и проверете поведението при разрешаване на имена на хостове, където това е важно. Подаването на SOCKS URL към несвързана опция за HTTP прокси не заменя документирания път на конектора.