Proxyji Sessiona u Python Requests i prednost okruženja
Učinite rutiranje Python Requests predvidljivim pri radu session.proxies, promenljivih okruženja, postavki zahteva i trust_env.
Ako session.proxies pokazuje na jednu krajnju tačku, a skripta koristi proxy ljuske, ponovno dodeljivanje istog rečnika neće rešiti sukob. Requests može spojiti postavke proxyja iz okruženja s prednošću nad podrazumevanim vrednostima Sessiona. Odaberite treba li Session nastaviti otkrivati postavke iz okruženja.
Zadržite otkrivanje okruženja, navedite rute u zahtevu
Prosledite izričite vrednosti pojedinačnom pozivu, kako Requests preporučuje za izbegavanje ovog sukoba Sessiona i okruženja:
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()
Lokalni osluškivač zamenite svojim. Ako poredite javne HTTP tačke, birajte kandidate s liste HTTP proxyja uz nepromenjenu politiku Sessiona. Time upravljate prosleđenim stavkama mapiranja; svesno odlučite i za druge šeme ili hostove aplikacije. Servis, IDE, kontejner ili CI izvršilac može naslediti drugačije okruženje od terminala.
Neka Session upravlja svojim postavkama
Ako aplikacija ne treba otkrivati proxyje iz okruženja, postavite politiku pre prvog zahteva:
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 utiče i na konfiguraciju sertifikata povezanu s okruženjem te automatsku netrc autentifikaciju. Uzmite te zavisnosti u obzir pre izbora. Za odobren privatni paket CA sertifikata možete navesti izričitu putanju:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Koristite stvarno odobren paket i ostavite proveru uključenu. Za svaku politiku rutiranja zadržite zaseban Session umesto menjanja jednog dok ga drugi poslovi koriste.
Ako nijedna mogućnost ne objašnjava rutu aplikacije, uporedite izolovani Session s aplikacijom u istom izvršnom okruženju i s istim bezopasnim odredištem. Zabeležite prisutne proxy promenljive, vrednost trust_env i prosleđuje li poziv proxies; URL-ove s pristupnim podacima izostavite iz deljenih dnevnika. Izolovani uspeh usmerava sledeću proveru na pravljenje Sessiona, adaptere, tokove pripremljenih zahteva ili sopstvene transporte. Test okruženja curlom ne određuje sopstveno ponašanje spajanja Requestsa.