Proxy-uri Session în Python Requests și prioritatea mediului
Faceți rutarea Python Requests previzibilă când interacționează session.proxies, variabilele de mediu, setările cererii și trust_env.
Dacă session.proxies indică un punct final, dar scriptul folosește proxy-ul shellului, reasignarea aceluiași dicționar nu rezolvă conflictul. Requests poate combina setările proxy din mediu cu prioritate față de valorile implicite Session. Decideți dacă Session trebuie să continue descoperirea setărilor din mediu.
Păstrați descoperirea mediului, indicați rutele în cerere
Transmiteți valori explicite apelului individual, conform recomandării Requests pentru evitarea acestui conflict dintre Session și mediu:
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()
Înlocuiți punctul local de ascultare cu al vostru. Dacă comparați puncte HTTP publice, alegeți candidați din lista de proxy-uri HTTP păstrând politica Session fixă. Aceasta controlează intrările mapării furnizate; alegeți deliberat și pentru alte scheme sau gazde folosite de aplicație. Un serviciu, IDE, container sau executant CI poate moșteni un mediu diferit de terminal.
Lăsați Session să-și controleze setările
Dacă aplicația nu trebuie să descopere proxy-uri din mediu, stabiliți politica înaintea primei cereri:
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 afectează și configurarea certificatelor legată de mediu și autentificarea automată netrc. Luați în calcul aceste dependențe înainte de alegere. Pentru un pachet privat aprobat de certificate CA, puteți transmite o cale explicită:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Folosiți pachetul aprobat în realitate și păstrați verificarea activă. Mențineți o Session separată pentru fiecare politică de rutare, în loc să modificați una în timp ce alte sarcini o folosesc.
Dacă niciuna dintre alternative nu explică ruta aplicației, comparați o Session izolată cu aplicația în același mediu de execuție și către aceeași destinație inofensivă. Înregistrați variabilele proxy prezente, valoarea trust_env și dacă apelul transmite proxies; excludeți URL-urile cu acreditări din jurnalele partajate. Succesul izolat direcționează următoarea inspecție către construirea Session, adaptoare, fluxuri de cereri pregătite sau transporturi personalizate. Un test al mediului cu curl nu stabilește comportamentul de combinare propriu Requests.