For én asynkron forespørsel gjennom en HTTP-proxy uten autentisering, hold ruten på session.get(). Legg aiohttp til prosjektet om nødvendig:

uv add aiohttp

Bytt ut dokumentasjonsadressen nedenfor med ditt HTTP-lyttepunkt eller en kandidat fra listen over HTTP-proxyer. Det må tillate CONNECT til HTTPS-målet; et endepunkt som bare støtter SOCKS, trenger en egnet kobler i stedet for dette proxy-argumentet.

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())

Forespørselen skriver ut HTTP-statusen og de første 200 tegnene av svarteksten. En 403 eller 429 er fortsatt et svar du kan undersøke her; kall response.raise_for_status() om appen skal gjøre mislykkede statuser til unntak. De asynkrone kontekstbehandlerne lukker økten og svaret når blokkene er ferdige, også ved unntak.

Det 15 sekunder lange total-budsjettet dekker forespørselsoperasjonen. Det 5 sekunder lange connect-budsjettet omfatter venting på en tilgjengelig forbindelse fra poolen, så en opptatt pool kan bruke det opp før en ny socket åpnes. Forskjellen er viktig når du tilpasser ett kall til samtidige kontroller.

trust_env=False holder den viste ruten uttrykkelig. aiohttp finner ikke proxy-miljøvariabler som standard; eksport av en i en annen terminal setter ikke opp dette kallet. Velg trust_env=True bare når prosessens arvede miljø er den tiltenkte rutingspolicyen.

Relaterte artikler