Маршрутизація SOCKS у aiohttp з aiohttp-socks
Використовуйте сумісний конектор із підтримкою SOCKS, а не копіюйте старий приклад проксі aiohttp з видаленими класами конектора.
aiohttp документує підтримку HTTP-проксі через параметри запиту. Кінцевій точці SOCKS потрібна реалізація, яка розмовляє SOCKS. Зміна порту URL проксі на 1080 не дає такої реалізації.
Усередині async-функції використовуйте конектор, який надає підтримуваний проєкт 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()Це припускає, що пакет конектора вже доступний і сумісний із версією aiohttp у застосунку. Кінцева точка ілюстративна; список проксі SOCKS5 пропонує публічних кандидатів для URL конектора. Налаштуйте політику тайм-ауту та розміру відповіді для реального навантаження.
Старі відповіді посилаються на різні пакети й назви конекторів: aiosocks, aiosocksy і aiohttp-socks не є взаємозамінними шляхами імпорту. Читайте вимоги та приклад для пакета, який фактично використовується. Поєднання класу одного проєкту з аргументами іншого може зазнати невдачі ще до спроби будь-якого з'єднання з проксі.
Тримайте конектор і час життя сесії разом та перевіряйте поведінку розв'язання імен хостів там, де це важливо. Передавання URL SOCKS незв'язаному параметру HTTP-проксі не замінює документований шлях конектора.