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 aiohttp

Sustituye 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.

Artículos relacionados