Un site web a besoin d'un proxy différent du reste de vos requêtes HTTPS. Requests peut exprimer ce choix dans le dictionnaire de proxies lui-même :

routes = {
    "https://reports.example": "http://reports-proxy.example:8080",
    "https": "http://default-proxy.example:8080",
}
response = requests.get(
    "https://reports.example/monthly",
    proxies=routes,
    timeout=(5, 20),
)
response.raise_for_status()

Pour cette destination, la clé propre au nom d'hôte l'emporte. Un autre nom d'hôte HTTPS utilise l'entrée globale du schéma. Les valeurs décrivent la connexion au proxy, donc une destination HTTPS peut correctement correspondre à une URL de proxy HTTP. Lorsqu'il s'agit de routes de sites publics autorisées sans comptes proxy, la liste de proxies HTTP peut fournir des candidats pour ces valeurs ; gardez chaque règle de destination explicite.

Faire correspondre un nom d'hôte, pas une URL de ressource

Dans Requests 2.32.5, la clé spécifique est construite à partir du schéma de la destination et du nom d'hôte analysé. Elle ne contient ni le chemin, ni la requête, ni le port.

Ajouter /monthly à la clé du dictionnaire ne restreindra pas la règle à ce chemin. De même, https://reports.example:8443 n'est pas une clé propre à un port que ce sélecteur reconnaîtrait. La règle du nom d'hôte s'applique aussi lorsque l'URL de destination utilise un autre port.

Il n'y a pas d'expansion de joker dans cette recherche. Une règle pour reports.example ne couvre pas automatiquement un sous-domaine. Utilisez une décision de routage explicite en dehors de ce dictionnaire simple lorsque la politique exige une correspondance de chemin, de port ou de suffixe.

Savoir quel repli vient ensuite

L'implémentation vérifie les clés dans cet ordre : scheme://hostname, scheme, all://hostname, puis all. Une entrée HTTPS globale au schéma a donc priorité sur une entrée de nom d'hôte pour tous les schémas. Placez une règle de nom d'hôte propre au schéma en premier dans votre conception lorsque c'est l'exception voulue.

Tenez aussi compte de la façon dont votre Session fusionne les valeurs par défaut et les réglages issus de l'environnement. Passer ces deux entrées explicites avec la requête rend leurs routes voulues claires, mais ne définit pas de politique pour tout autre schéma de destination.

Une redirection peut introduire un autre nom d'hôte, et le choix du proxy concerne aussi cette nouvelle destination. Lisez la règle comme une décision sur chaque URL demandée, plutôt que comme une route permanente attachée à la première page.

Articles similaires