За едно асинхроно барање преку HTTP прокси без автентикација задржете ја рутата на session.get(). Додајте aiohttp во проектот ако треба:

uv add aiohttp

Заменете ја документациската адреса подолу со вашиот HTTP слушател или кандидат од листата со HTTP прокси-сервери. Мора да дозволува CONNECT до HTTPS одредиштето; точка само за 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() ако апликацијата треба да ги претвори неуспешните статуси во исклучоци. Асинхроните управувачи со контекст ја затвораат сесијата и одговорот по завршување на блоковите, и при исклучок.

Буџетот total од 15 секунди ја покрива операцијата на барањето. Буџетот connect од 5 секунди вклучува чекање на достапна врска од пулот, па зафатен пул може да го потроши пред отворање нов сокет. Разликата е важна кога едно повикување се приспособува за истовремени проверки.

trust_env=False ја одржува прикажаната рута изречна. aiohttp стандардно не открива прокси променливи на околината; извоз на една во друг терминал нема да го конфигурира повикот. Изберете trust_env=True само кога наследената околина на процесот е посакуваната политика за рутирање.

Поврзани статии