Proxyji Sessiona u Python Requests i prednost okruženja
Učinite rutiranje Python Requests predvidljivim kada djeluju session.proxies, varijable okruženja, postavke zahtjeva i trust_env.
Ako session.proxies pokazuje na jednu krajnju tačku, a skripta koristi proxy ljuske, ponovno dodjeljivanje istog rječnika neće riješiti sukob. Requests može spojiti postavke proxyja iz okruženja s prednošću nad zadanim vrijednostima Sessiona. Odaberite treba li Session nastaviti otkrivati postavke iz okruženja.
Zadržite otkrivanje okruženja, navedite rute u zahtjevu
Proslijedite izričite vrijednosti pojedinačnom pozivu, kako Requests preporučuje za izbjegavanje 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č zamijenite svojim. Ako poredite javne HTTP tačke, birajte kandidate s liste HTTP proxyja uz nepromijenjenu politiku Sessiona. Time upravljate proslijeđenim stavkama mapiranja; svjesno odlučite i za druge sheme ili domaćine koje aplikacija koristi. Servis, IDE, kontejner ili CI izvršilac može naslijediti drugačije okruženje od terminala.
Neka Session upravlja svojim postavkama
Ako aplikacija ne treba otkrivati proxyje iz okruženja, postavite politiku prije prvog zahtjeva:
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 postavke certifikata povezane s okruženjem te automatsku netrc autentifikaciju. Uzmite te zavisnosti u obzir prije izbora. Za odobreni privatni paket CA certifikata možete navesti izričitu putanju:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Koristite stvarno odobreni paket i ostavite provjeru uključenu. Za svaku politiku rutiranja zadržite zaseban Session umjesto mijenjanja 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. Zabilježite prisutne proxy varijable, vrijednost trust_env i prosljeđuje li poziv proxies; URL-ove s pristupnim podacima izostavite iz dijeljenih dnevnika. Uspjeh u izolaciji usmjerava narednu provjeru na stvaranje Sessiona, adaptere, tokove pripremljenih zahtjeva ili vlastite transporte. Test okruženja pomoću curla ne određuje vlastito ponašanje spajanja Requestsa.