Uma requisição aiohttp por um proxy HTTP
Envie uma requisição aiohttp por um proxy HTTP sem autenticação, inspecione o status e termine em um ciclo de vida assíncrono explícito.
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 aiohttpSubstitua 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.