Une requête aiohttp via un proxy HTTP
Envoyez avec aiohttp une requête par un proxy HTTP sans authentification, inspectez son statut et terminez dans un cycle de vie asynchrone explicite.
Pour une seule requête asynchrone via un proxy HTTP sans authentification, gardez le trajet sur session.get(). Ajoutez aiohttp au projet si nécessaire :
uv add aiohttpRemplacez l’adresse de documentation ci-dessous par votre point d’écoute HTTP ou un candidat de la liste de proxys HTTP. Il doit autoriser CONNECT vers la destination HTTPS ; un point limité à SOCKS nécessite un connecteur adapté plutôt que cet argument 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 requête affiche son statut HTTP et les 200 premiers caractères du texte de réponse. Un 403 ou 429 reste ici une réponse inspectable ; appelez response.raise_for_status() si l’application doit transformer les statuts d’échec en exceptions. Les gestionnaires de contexte asynchrones ferment la session et la réponse à la fin de leurs blocs, y compris en cas d’exception.
Le budget total de 15 secondes couvre l’opération de requête. Le budget connect de 5 secondes inclut l’attente d’une connexion disponible dans le pool : un pool occupé peut donc l’épuiser avant l’ouverture d’un nouveau socket. Cette distinction compte lorsque l’appel unique est adapté à des vérifications concurrentes.
trust_env=False maintient le trajet présenté explicite. aiohttp ne découvre pas par défaut les variables d’environnement proxy ; en exporter une dans un autre terminal ne configure pas cet appel. Choisissez trust_env=True uniquement lorsque l’environnement hérité du processus est la politique de routage souhaitée.