Enrutamento SOCKS en aiohttp con aiohttp-socks
Use un conector compatible que entenda SOCKS en vez de copiar un exemplo antigo de proxy de aiohttp con clases de conector eliminadas.
aiohttp documenta o soporte de proxy HTTP a través das súas opcións de solicitude. Un punto final SOCKS necesita unha implementación que fale SOCKS. Cambiar o porto dun URL de proxy a 1080 non fornece esa implementación.
Dentro dunha función async, use o conector que fornece o proxecto mantido 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()Isto supón que o paquete do conector xa está dispoñible e é compatible coa versión de aiohttp na aplicación. O punto final é ilustrativo; a lista de proxies SOCKS5 ofrece candidatos públicos para o URL do conector. Configure a política de tempo de espera e de tamaño de resposta para a carga real.
As respostas antigas refírense a paquetes e nomes de conector diferentes: aiosocks, aiosocksy e aiohttp-socks non son rutas de importación intercambiables. Lea os requisitos e o exemplo do paquete que se usa realmente. Combinar a clase dun proxecto cos argumentos doutro pode fallar antes de tentar calquera conexión de proxy.
Manteña o conector e a vida da sesión xuntos, e comprobe o comportamento de resolución de nomes de host onde importe. Pasar un URL SOCKS a unha opción de proxy HTTP non relacionada non substitúe a ruta documentada do conector.