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 aiohttp

Substitú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.

Artigos relacionados