aiohttp documenta la compatibilidad con proxy HTTP a través de sus opciones de solicitud. Un extremo SOCKS necesita una implementación que hable SOCKS. Cambiar el puerto de la URL del proxy a 1080 no proporciona esa implementación.

Dentro de una función async, use el conector que proporciona el proyecto mantenido 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()

Esto supone que el paquete del conector ya está disponible y es compatible con la versión de aiohttp de la aplicación. El extremo es ilustrativo; la lista de proxies SOCKS5 ofrece candidatos públicos para la URL del conector. Configure la política de tiempo de espera y de tamaño de respuesta para la carga real.

Las respuestas antiguas mencionan distintos paquetes y nombres de conector: aiosocks, aiosocksy y aiohttp-socks no son rutas de importación intercambiables. Lea los requisitos y el ejemplo del paquete que se use realmente. Combinar la clase de un proyecto con los argumentos de otro puede fallar antes de intentar cualquier conexión de proxy.

Mantenga juntos el conector y la vida de la sesión, y compruebe el comportamiento de resolución de nombres de host donde importe. Pasar una URL SOCKS a una opción de proxy HTTP no relacionada no sustituye la ruta documentada del conector.

Artículos relacionados