Proxy Session v Python Requests a přednost prostředí
Zajistěte předvídatelné směrování Python Requests při souběhu session.proxies, proměnných prostředí, nastavení požadavku a trust_env.
Pokud session.proxies ukazuje na jeden koncový bod, ale skript používá proxy shellu, opětovné přiřazení stejného slovníku konflikt nevyřeší. Requests může sloučit nastavení proxy z prostředí s předností před výchozími hodnotami Session. Rozhodněte, zda má Session dál zjišťovat nastavení z prostředí.
Ponechte zjišťování prostředí, trasy předávejte v požadavku
Předávejte výslovné hodnoty jednotlivému volání, jak Requests doporučuje pro zamezení tohoto konfliktu mezi Session a prostředí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()
Místní naslouchající bod nahraďte vlastním. Při porovnávání veřejných HTTP bodů vybírejte kandidáty ze seznamu HTTP proxy a ponechte politiku Session stejnou. To řídí předané položky mapování; vědomě rozhodněte i o dalších schématech či hostitelích aplikace. Služba, IDE, kontejner nebo vykonavatel CI může zdědit jiné prostředí než terminál.
Nechte Session spravovat vlastní nastavení
Pokud aplikace nemá zjišťovat proxy z prostředí, nastavte politiku před prvním požadavkem:
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 ovlivňuje také konfiguraci certifikátů související s prostředím a automatickou autentizaci netrc. Před volbou zohledněte tyto závislosti. Pro schválený soukromý balík certifikátů CA můžete předat výslovnou cestu:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Použijte skutečně schválený balík a ponechte ověřování zapnuté. Pro každou politiku směrování mějte samostatnou Session místo změn jedné, zatímco ji používají jiné úlohy.
Pokud ani jedna možnost nevysvětluje trasu aplikace, porovnejte izolovanou Session s aplikací ve stejném běhovém prostředí a se stejným neškodným cílem. Zaznamenejte přítomné proxy proměnné, hodnotu trust_env a zda volání předává proxies; URL s přihlašovacími údaji nepatří do sdílených logů. Izolovaný úspěch směruje další kontrolu na vytváření Session, adaptéry, toky připravených požadavků nebo vlastní transporty. Test prostředí pomocí curl neurčí vlastní chování slučování Requests.