Ak session.proxies ukazuje na jeden koncový bod, ale skript používa proxy shellu, opätovné priradenie rovnakého slovníka konflikt nevyrieši. Requests môže zlúčiť nastavenia proxy z prostredia s prednosťou pred predvolenými hodnotami Session. Rozhodnite, či má Session ďalej zisťovať nastavenia z prostredia.

Ponechajte zisťovanie prostredia, trasy odovzdávajte v požiadavke

Odovzdávajte výslovné hodnoty jednotlivému volaniu, ako Requests odporúča na zamedzenie tohto konfliktu Session s prostredím:

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

Miestny načúvajúci bod nahraďte vlastným. Pri porovnávaní verejných HTTP bodov vyberajte kandidátov zo zoznamu HTTP proxy a ponechajte politiku Session rovnakú. To riadi odovzdané položky mapovania; vedome rozhodnite aj o ďalších schémach alebo hostiteľoch aplikácie. Služba, IDE, kontajner alebo vykonávateľ CI môže zdediť iné prostredie než terminál.

Nechajte Session spravovať vlastné nastavenia

Ak aplikácia nemá zisťovať proxy z prostredia, nastavte politiku pred prvou požiadavkou:

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 ovplyvňuje aj konfiguráciu certifikátov súvisiacu s prostredím a automatickú autentifikáciu netrc. Pred voľbou zohľadnite tieto závislosti. Pre schválený súkromný balík certifikátov CA môžete odovzdať výslovnú cestu:

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

Použite skutočne schválený balík a ponechajte overovanie zapnuté. Pre každú politiku smerovania majte samostatnú Session namiesto zmien jednej, kým ju používajú iné úlohy.

Ak ani jedna možnosť nevysvetľuje trasu aplikácie, porovnajte izolovanú Session s aplikáciou v rovnakom behovom prostredí a s neškodným cieľom. Zaznamenajte prítomné proxy premenné, hodnotu trust_env a či volanie odovzdáva proxies; URL s prihlasovacími údajmi nepatria do zdieľaných logov. Izolovaný úspech smeruje ďalšiu kontrolu na tvorbu Session, adaptéry, toky pripravených požiadaviek alebo vlastné transporty. Test prostredia pomocou curl neurčí vlastné správanie Requests pri zlučovaní.

Súvisiace články