Assegna all’host scelto un trasporto proxy e al resto del client un trasporto diretto esplicito:

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)

Sostituisci l’indirizzo documentale con l’endpoint HTTP voluto del servizio o della lista dei proxy HTTP. Qui example.com usa il mount e example.org il predefinito diretto. Entrambe le chiamate contano: il successo del solo host con proxy non verifica il percorso di ripiego.

Dettaglio di corrispondenzaEffetto
all://example.comL’host esatto per tutti gli schemi di destinazione.
Un sottodominioUna scelta separata; usa intenzionalmente un carattere jolly supportato se deve corrispondere anch’esso.
Un percorsoI mount selezionano schemi, host e porte facoltative, non percorsi URL.
Un reindirizzamento a un altro hostQuando si seguono i reindirizzamenti, il nuovo URL viene confrontato e può usare il ripiego diretto.

L’esempio disattiva la lettura dell’ambiente sul client e su entrambi i trasporti. Un’altra regola proxy ampia o un mount corrispondente può cambiare il risultato nell’adattamento. Se il deployment dipende da configurazione CA dell’ambiente, fornisci esplicitamente tale fiducia o conserva la politica di rilevamento appropriata, senza perderla silenziosamente.

Non occorre modificare il proxy di tutta la macchina. Nei controlli di percorso mantieni sia l’host previsto via proxy sia un host di ripiego scelto deliberatamente.

Articoli correlati