aiohttp documente la prise en charge du proxy HTTP via ses options de requête. Un point de terminaison SOCKS nécessite une implémentation qui parle SOCKS. Changer le port d'une URL de proxy en 1080 ne fournit pas cette implémentation.

Dans une fonction async, utilisez le connecteur fourni par le projet maintenu 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()

Cela suppose que le paquet du connecteur soit déjà disponible et compatible avec la version d'aiohttp de l'application. Le point de terminaison est illustratif ; la liste de proxys SOCKS5 propose des candidats publics pour l'URL du connecteur. Configurez la politique de délai d'attente et de taille de réponse pour la charge réelle.

Les anciennes réponses renvoient à différents paquets et noms de connecteurs : aiosocks, aiosocksy et aiohttp-socks ne sont pas des chemins d'import interchangeables. Lisez les exigences et l'exemple du paquet réellement utilisé. Combiner la classe d'un projet avec les arguments d'un autre peut échouer avant même toute tentative de connexion au proxy.

Gardez le connecteur et la durée de vie de la session ensemble, et vérifiez le comportement de résolution des noms d'hôte là où cela compte. Passer une URL SOCKS à une option de proxy HTTP sans rapport ne remplace pas la route documentée du connecteur.

Articles similaires