Para uma requisição assíncrona por um proxy HTTP sem autenticação, mantenha a rota em session.get(). Adicione aiohttp ao projeto se necessário:

uv add aiohttp

Substitua o endereço de documentação abaixo pelo seu listener HTTP ou um candidato da lista de proxies HTTP. Ele precisa permitir CONNECT ao destino HTTPS; um endpoint que só aceita SOCKS exige um conector adequado em 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 requisição imprime seu status HTTP e os primeiros 200 caracteres do texto da resposta. Um 403 ou 429 continua sendo uma resposta inspecionável aqui; chame response.raise_for_status() se o aplicativo deve transformar status de falha em exceções. Os gerenciadores de contexto assíncronos fecham a sessão e a resposta ao terminar os blocos, inclusive em caso de exceção.

O orçamento total de 15 segundos cobre a operação da requisição. O orçamento connect de 5 segundos inclui a espera por uma conexão disponível no pool; assim, um pool ocupado pode esgotá-lo antes de abrir um novo socket. Essa diferença importa ao adaptar a chamada única para verificações concorrentes.

trust_env=False mantém explícita a rota mostrada. O aiohttp não descobre variáveis de ambiente de proxy por padrão; exportar uma em outro terminal não configura esta chamada. Escolha trust_env=True somente quando o ambiente herdado pelo processo for a política de roteamento pretendida.

Artigos relacionados