Faire passer un seul hôte par un proxy HTTPX
Monter un transport proxy pour un hôte choisi tout en conservant une route directe comme repli normal du client.
Donnez à l’hôte choisi un transport proxy et au reste du client un transport direct explicite :
import httpx
direct = httpx.HTTPTransport(trust_env=False)
proxied = httpx.HTTPTransport(
proxy="http://203.0.113.10:8080",
trust_env=False,
)
with httpx.Client(
transport=direct,
mounts={"all://example.com": proxied},
trust_env=False,
timeout=15,
) as client:
response = client.get("https://example.com/")
print(response.status_code)
other = client.get("https://example.org/")
print(other.status_code)
Remplacez l’adresse documentaire par le point HTTP voulu de votre service ou de la liste de proxys HTTP. Ici, example.com utilise le montage et example.org le défaut direct. Les deux appels comptent : le succès du seul hôte proxifié ne vérifie pas la route de repli.
| Détail de correspondance | Effet |
|---|---|
all://example.com | L’hôte exact, quels que soient les schémas de destination. |
| Un sous-domaine | Un choix distinct ; utilisez volontairement un joker pris en charge s’il doit aussi correspondre. |
| Un chemin | Les montages sélectionnent des motifs de schéma, d’hôte et de port facultatif, pas les chemins d’URL. |
| Une redirection vers un autre hôte | Quand le suivi des redirections est activé, la nouvelle URL est évaluée et peut utiliser le repli direct. |
L’exemple désactive la lecture de l’environnement sur le client et les deux transports. Une autre règle proxy large ou un montage correspondant peut changer le résultat lors de l’adaptation. Si le déploiement dépend d’une configuration CA fournie par l’environnement, fournissez cette confiance explicitement ou conservez la politique de découverte appropriée plutôt que la perdre silencieusement.
Aucune modification du proxy à l’échelle de la machine n’est nécessaire. Incluez dans vos contrôles de route l’hôte prévu via proxy et un hôte de repli choisi délibérément.