Una solicitud aiohttp mediante un proxy HTTP
Envía una solicitud aiohttp por un proxy HTTP sin autenticación, inspecciona su estado y termina dentro de un ciclo de vida asíncrono explícito.
Para una solicitud asíncrona mediante un proxy HTTP sin autenticación, mantén la ruta en session.get(). Añade aiohttp al proyecto si hace falta:
uv add aiohttpSustituye la dirección de documentación siguiente por tu punto de escucha HTTP o un candidato de la lista de proxies HTTP. Debe permitir CONNECT al destino HTTPS; un punto que solo admite SOCKS necesita un conector adecuado en lugar de este 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())
La solicitud muestra su estado HTTP y los primeros 200 caracteres del texto de respuesta. Un 403 o 429 sigue siendo aquí una respuesta inspeccionable; llama a response.raise_for_status() si tu aplicación debe convertir los estados no satisfactorios en excepciones. Los gestores de contexto asíncronos cierran la sesión y la respuesta al terminar sus bloques, incluso ante una excepción.
El presupuesto total de 15 segundos cubre la operación de la solicitud. El presupuesto connect de 5 segundos incluye esperar una conexión disponible del pool, así que un pool ocupado puede agotarlo antes de abrir un socket nuevo. La distinción importa al adaptar la llamada única a comprobaciones concurrentes.
trust_env=False mantiene explícita la ruta mostrada. aiohttp no descubre por defecto las variables de entorno de proxy; exportar una en otro terminal no configura esta llamada. Elige trust_env=True solo cuando el entorno heredado por el proceso sea la política de enrutamiento prevista.