En aiohttp-förfrågan genom en HTTP-proxy
Skicka en aiohttp-förfrågan genom HTTP-proxy utan autentisering, granska statusen och avsluta i en uttrycklig asynkron livscykel.
För en enda asynkron förfrågan genom HTTP-proxy utan autentisering, håll rutten på session.get(). Lägg till aiohttp i projektet vid behov:
uv add aiohttpErsätt dokumentationsadressen nedan med din HTTP-lyssnare eller en kandidat från listan med HTTP-proxyer. Den måste tillåta CONNECT till HTTPS-destinationen; en slutpunkt som bara stöder SOCKS behöver en lämplig anslutare i stället för detta proxy-argument.
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())
Förfrågan skriver ut sin HTTP-status och de första 200 tecknen i svarstexten. Ett 403 eller 429 är fortfarande ett svar som kan granskas här; anropa response.raise_for_status() om appen ska göra misslyckade statusar till undantag. De asynkrona kontexthanterarna stänger sessionen och svaret när blocken avslutas, även vid undantag.
Budgeten total på 15 sekunder täcker förfrågningsoperationen. Budgeten connect på 5 sekunder omfattar väntan på en tillgänglig poolanslutning, så en upptagen pool kan förbruka den innan en ny socket öppnas. Skillnaden spelar roll när det enstaka anropet anpassas till samtidiga kontroller.
trust_env=False håller den visade rutten uttrycklig. aiohttp upptäcker inte proxy-miljövariabler som standard; att exportera en i en annan terminal konfigurerar inte detta anrop. Välj trust_env=True endast när processens ärvda miljö är den avsedda routningspolicyn.