Instradamento SOCKS in aiohttp con aiohttp-socks
Usate un connettore compatibile che supporta SOCKS invece di copiare un vecchio esempio di proxy aiohttp con classi di connettore rimosse.
aiohttp documenta il supporto proxy HTTP tramite le sue opzioni di richiesta. Un endpoint SOCKS richiede un'implementazione che parli SOCKS. Cambiare la porta di un URL proxy in 1080 non fornisce tale implementazione.
All'interno di una funzione async, usate il connettore fornito dal progetto mantenuto 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()Questo presuppone che il pacchetto del connettore sia già disponibile e compatibile con la versione di aiohttp nell'applicazione. L'endpoint è illustrativo; la lista di proxy SOCKS5 offre candidati pubblici per l'URL del connettore. Configurate i criteri di timeout e di dimensione della risposta per il carico di lavoro reale.
Le vecchie risposte fanno riferimento a pacchetti e nomi di connettori diversi: aiosocks, aiosocksy e aiohttp-socks non sono percorsi di importazione intercambiabili. Leggete i requisiti e l'esempio del pacchetto effettivamente usato. Combinare la classe di un progetto con gli argomenti di un altro può fallire prima ancora di qualsiasi tentativo di connessione proxy.
Mantenete insieme il connettore e la durata della sessione, e verificate il comportamento di risoluzione dei nomi host dove conta. Passare un URL SOCKS a un'opzione proxy HTTP non correlata non sostituisce il percorso documentato del connettore.