SOCKS-routering in aiohttp met aiohttp-socks
Gebruik een compatibele SOCKS-bewuste connector in plaats van een oud aiohttp-proxyvoorbeeld met verwijderde connector-klassen te kopiëren.
aiohttp documenteert HTTP-proxyondersteuning via de aanvraagopties. Een SOCKS-eindpunt vereist een implementatie die SOCKS spreekt. De poort van een proxy-URL naar 1080 wijzigen levert die implementatie niet.
Gebruik binnen een async-functie de connector die het onderhouden aiohttp-socks-project levert:
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()Dit veronderstelt dat het connectorpakket al beschikbaar is en compatibel is met de aiohttp-versie in de applicatie. Het eindpunt is illustratief; de SOCKS5-proxylijst biedt openbare kandidaten voor de connector-URL. Configureer het time-out- en reactiegroottebeleid voor de werkelijke belasting.
Oude antwoorden verwijzen naar verschillende pakketten en connectornamen: aiosocks, aiosocksy en aiohttp-socks zijn geen uitwisselbare importpaden. Lees de vereisten en het voorbeeld voor het pakket dat daadwerkelijk wordt gebruikt. De klasse van het ene project combineren met de argumenten van een ander kan mislukken voordat er zelfs maar een proxyverbinding wordt geprobeerd.
Houd de connector en de levensduur van de sessie bij elkaar, en controleer het gedrag van hostnaamresolutie waar dat belangrijk is. Een SOCKS-URL doorgeven aan een niet-gerelateerde HTTP-proxyoptie vervangt de gedocumenteerde route van de connector niet.