Jeśli session.proxies wskazuje jeden punkt końcowy, ale skrypt używa proxy powłoki, ponowne przypisanie tego samego słownika nie rozwiąże konfliktu. Requests może scalać ustawienia proxy ze środowiska z pierwszeństwem przed domyślnymi wartościami Session. Zdecyduj, czy Session ma nadal wykrywać konfigurację środowiska.

Zachowaj wykrywanie środowiska, podawaj trasy w żądaniu

Przekazuj jawne wartości do pojedynczego wywołania, zgodnie z zaleceniem Requests dotyczącym tego konfliktu Session ze środowiskiem:

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()

Zastąp lokalny punkt nasłuchu własnym. Porównując publiczne punkty HTTP, wybieraj kandydatów z listy proxy HTTP i nie zmieniaj polityki Session. To kontroluje przekazane wpisy mapowania; świadomie wybierz też ustawienia dla innych schematów lub hostów aplikacji. Usługa, IDE, kontener lub wykonawca CI może odziedziczyć inne środowisko niż terminal.

Niech Session zarządza własnymi ustawieniami

Jeśli aplikacja nie powinna wykrywać proxy ze środowiska, ustaw politykę przed pierwszym żądaniem:

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 wpływa także na związaną ze środowiskiem konfigurację certyfikatów i automatyczne uwierzytelnianie netrc. Uwzględnij te zależności przed wyborem. Dla zatwierdzonego prywatnego pakietu certyfikatów CA możesz przekazać jawną ścieżkę:

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

Użyj rzeczywiście zatwierdzonego pakietu i pozostaw weryfikację włączoną. Dla każdej polityki routingu zachowaj oddzielną Session, zamiast zmieniać jedną, gdy inne zadania jej używają.

Jeśli żaden wariant nie wyjaśnia trasy aplikacji, porównaj izolowaną Session z aplikacją w tym samym środowisku uruchomieniowym i z nieszkodliwym celem. Zapisz obecne zmienne proxy, wartość trust_env oraz to, czy wywołanie przekazuje proxies; usuń URL-e z danymi logowania z udostępnianych logów. Sukces izolowanego przypadku kieruje dalszą kontrolę na tworzenie Session, adaptery, przepływy przygotowanych żądań lub własne transporty. Test środowiska curl nie rozstrzyga zachowania scalania samego Requests.

Powiązane artykuły