Proxy Session v Python Requests a prednosť prostredia
Zaistite predvídateľné smerovanie Python Requests pri súbehu session.proxies, premenných prostredia, nastavení požiadavky a trust_env.
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í.