За један асинхрони захтев кроз 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 само када наслеђено окружење процеса представља жељену политику усмеравања.

Повезани чланци