Аутентификациясыз HTTP проксиі арқылы бір асинхронды сұрау үшін жолды session.get() үстінде ұстаңыз. Қажет болса жобаға aiohttp қосыңыз:

uv add aiohttp

Төмендегі құжаттамалық мекенжайды өз HTTP тыңдаушыңызға не HTTP прокси тізіміндегі үміткерге ауыстырыңыз. Ол HTTPS нысанасына CONNECT рұқсат етуі тиіс; тек SOCKS қолдайтын нүктеге бұл proxy аргументінің орнына тиісті коннектор керек.

import asyncio
import aiohttp

async def main():
    timeout = aiohttp.ClientTimeout(total=15, connect=5)
    async with aiohttp.ClientSession(
        timeout=timeout,
        trust_env=False,
    ) as session:
        async with session.get(
            "https://example.com/",
            proxy="http://203.0.113.10:8080",
        ) as response:
            print(response.status)
            print((await response.text())[:200])

asyncio.run(main())

Сұрау HTTP күйін және жауап мәтінінің алғашқы 200 таңбасын шығарады. 403 не 429 мұнда тексеруге болатын жауап болып қалады; қолданба сәтсіз күйлерді ерекше жағдайларға айналдыруы керек болса response.raise_for_status() шақырыңыз. Асинхронды контекст басқарушылары блоктар аяқталғанда, ерекше жағдай болса да, сессия мен жауапты жабады.

15 секундтық total бюджеті сұрау амалын қамтиды. 5 секундтық connect бюджетіне пулдан бос қосылым күту де кіреді, сондықтан бос емес пул оны жаңа сокет ашылғанша жұмсап қоюы мүмкін. Бір шақыруды қатар тексерулерге бейімдегенде бұл айырма маңызды.

trust_env=False көрсетілген жолды анық ұстайды. aiohttp әдепкіде прокси орта айнымалыларын таппайды; басқа терминалда біреуін экспорттау бұл шақыруды баптамайды. trust_env=True тек процестің мұраланған ортасы көзделген бағыттау саясаты болғанда таңдалуы керек.

Қатысты мақалалар