Za jedan asinhroni zahtjev kroz HTTP proxy bez autentifikacije zadržite rutu na session.get(). Po potrebi dodajte aiohttp projektu:

uv add aiohttp

Zamijenite dokumentacijsku adresu ispod svojim HTTP endpointom koji sluša ili kandidatom iz liste HTTP proxyja. Mora dopuštati CONNECT do HTTPS odredišta; endpoint koji podržava samo SOCKS treba odgovarajući konektor umjesto ovog argumenta 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())

Zahtjev ispisuje HTTP status i prvih 200 znakova teksta odgovora. Odgovor 403 ili 429 ovdje ostaje dostupan za pregled; pozovite response.raise_for_status() ako aplikacija treba pretvarati neuspješne statuse u izuzetke. Asinhroni upravitelji konteksta zatvaraju sesiju i odgovor po završetku blokova, uključujući slučaj izuzetka.

Budžet total od 15 sekundi pokriva operaciju zahtjeva. Budžet connect od 5 sekundi uključuje čekanje na dostupnu vezu iz skupa, pa zauzet skup može potrošiti vrijeme prije otvaranja novog socketa. To je važno pri prilagođavanju jednog poziva za istovremene provjere.

trust_env=False čini prikazanu rutu izričitom. aiohttp podrazumijevano ne pronalazi proxy varijable okruženja; izvoz jedne u drugom terminalu neće podesiti ovaj poziv. Odaberite trust_env=True samo kada naslijeđeno okruženje procesa predstavlja željenu politiku usmjeravanja.

Povezani članci