Egy aiohttp-kérés HTTP-proxyn keresztül
Küldjön aiohttp-kérést hitelesítés nélküli HTTP-proxyn át, vizsgálja meg az állapotát és zárja le egy egyértelmű aszinkron életciklusban.
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 aiohttpAz 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.