Egyetlen aszinkron kéréshez hitelesítés nélküli HTTP-proxyn át tartsa az útvonalat a session.get() hívásnál. Szükség esetén adja hozzá az aiohttp-t a projekthez:

uv add aiohttp

Az alábbi dokumentációs címet cserélje saját HTTP-figyelő végpontjára vagy a HTTP-proxyk listájának egyik jelöltjére. Engednie kell a CONNECT-et a HTTPS-célhoz; a csak SOCKS-ot kezelő végponthoz megfelelő csatlakozó kell e proxy argumentum helyett.

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

A kérés kiírja HTTP-állapotát és a válaszszöveg első 200 karakterét. A 403 vagy 429 itt továbbra is megvizsgálható válasz; hívja a response.raise_for_status() metódust, ha az alkalmazásnak a sikertelen állapotokat kivétellé kell alakítania. Az aszinkron kontextuskezelők lezárják a munkamenetet és a választ a blokk végén, kivételnél is.

A 15 másodperces total keret a kérésműveletet fedi le. Az 5 másodperces connect keret a szabad poolkapcsolatra várást is tartalmazza, így a foglalt pool már új socket megnyitása előtt felélheti. Ez fontos, amikor az egyetlen hívást párhuzamos ellenőrzésekre alakítja át.

A trust_env=False kifejezetté teszi a bemutatott útvonalat. Az aiohttp alapértelmezésben nem keresi meg a proxykörnyezeti változókat; egy másik terminálban végzett export nem állítja be ezt a hívást. Csak akkor válassza a trust_env=True értéket, ha a folyamat örökölt környezete jelenti a kívánt útválasztási szabályzatot.

Kapcsolódó cikkek