Se session.proxies indica un endpoint ma lo script usa il proxy della shell, riassegnare lo stesso dizionario non risolve il conflitto. Requests può unire le impostazioni proxy dell’ambiente dando loro priorità sui valori predefiniti di Session. Scegli se Session deve continuare a rilevare la configurazione nell’ambiente.

Mantieni il rilevamento dell’ambiente e indica le rotte nella richiesta

Passa valori espliciti alla singola chiamata, come consiglia Requests per evitare questo conflitto tra Session e ambiente:

proxies = {
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}

with requests.Session() as session:
    response = session.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()

Sostituisci il listener locale con il tuo. Se confronti endpoint HTTP pubblici, scegli candidati dall’elenco dei proxy HTTP mantenendo fissa la politica di Session. Questo controlla le voci della mappatura fornita; scegli consapevolmente anche per gli altri schemi o host usati dall’applicazione. Un servizio, IDE, contenitore o esecutore CI può ereditare un ambiente diverso dal terminale.

Lascia che Session controlli le proprie impostazioni

Se l’applicazione non deve rilevare proxy dall’ambiente, imposta la politica prima della prima richiesta:

with requests.Session() as session:
    session.trust_env = False
    session.proxies = {
        "http": "http://127.0.0.1:8080",
        "https": "http://127.0.0.1:8080",
    }
    response = session.get(
        "https://example.com/",
        timeout=(5, 15),
    )
    response.raise_for_status()

trust_env=False influisce anche sulla configurazione dei certificati legata all’ambiente e sull’autenticazione netrc automatica. Considera queste dipendenze prima di sceglierlo. Per un insieme privato approvato di certificati CA puoi passare un percorso esplicito:

response = session.get(
    "https://example.com/",
    timeout=(5, 15),
    verify="/path/to/approved-ca-bundle.pem",
)

Usa l’insieme realmente approvato e mantieni attiva la verifica. Tieni una Session separata per ogni politica di instradamento, anziché modificarne una mentre altri lavori la usano.

Se nessuna alternativa spiega il percorso dell’applicazione, confronta una Session isolata con l’applicazione nello stesso ambiente di esecuzione e verso una destinazione innocua. Registra le variabili proxy presenti, il valore di trust_env e se la chiamata passa proxies; escludi dai log condivisi gli URL con credenziali. Un successo isolato indirizza l’ispezione successiva verso creazione di Session, adattatori, flussi di richieste preparate o trasporti personalizzati. Un test dell’ambiente con curl non chiarisce il comportamento di unione specifico di Requests.

Articoli correlati