Unha petición aiohttp a través dun proxy HTTP
Envía unha petición aiohttp por un proxy HTTP sen autenticación, revisa o estado e remata nun ciclo de vida asíncrono explícito.
Para unha petición asíncrona a través dun proxy HTTP sen autenticación, mantén a ruta en session.get(). Engade aiohttp ao proxecto se fai falta:
uv add aiohttpSubstitúe o enderezo de documentación seguinte polo teu punto de escoita HTTP ou un candidato da lista de proxys HTTP. Debe permitir CONNECT ao destino HTTPS; un punto que só admite SOCKS precisa un conector axeitado en vez deste argumento 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())
A petición mostra o estado HTTP e os primeiros 200 caracteres do texto de resposta. Un 403 ou 429 segue sendo aquí unha resposta que se pode inspeccionar; chama a response.raise_for_status() se a aplicación debe converter os estados non satisfactorios en excepcións. Os xestores de contexto asíncronos pechan a sesión e a resposta ao rematar os bloques, mesmo ante unha excepción.
O orzamento total de 15 segundos cobre a operación da petición. O orzamento connect de 5 segundos inclúe esperar unha conexión dispoñible do pool, polo que un pool ocupado pode esgotalo antes de abrir un socket novo. A distinción importa ao adaptar a chamada única a comprobacións concorrentes.
trust_env=False mantén explícita a ruta mostrada. aiohttp non descobre por defecto as variables de contorno de proxy; exportar unha noutro terminal non configura esta chamada. Escolle trust_env=True só cando o contorno herdado polo proceso sexa a política de encamiñamento prevista.