Session-proxyar i Python Requests og forrang for miljøet
Gjer ruting i Python Requests føreseieleg når session.proxies, miljøvariablar, innstillingar per førespurnad og trust_env verkar saman.
Dersom session.proxies peikar på eitt endepunkt, men skriptet brukar proxyen til skalet, løyser ikkje ny tilordning av den same ordboka konflikten. Requests kan slå saman proxyinnstillingane i miljøet med forrang framfor standardverdiane til Session. Vel om Session framleis skal oppdage innstillingar frå miljøet.
Hald på miljøoppdaging, oppgi ruter i førespurnaden
Send uttrykkelege verdiar til det enkelte kallet, slik Requests tilrår for å unngå konflikten mellom Session og miljø:
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()
Byt ut den lokale lyttaren med din eigen. Samanliknar du offentlege HTTP-endepunkt, vel kandidatar frå lista over HTTP-proxyar og hald Session-reglane faste. Dette styrer dei oppgitte oppføringane i tilordninga; vel medvite òg for andre skjema eller vertar programmet brukar. Ei teneste, IDE, ein konteinar eller CI-køyrar kan arve eit anna miljø enn terminalen.
Lat Session styre sine eigne innstillingar
Dersom programmet ikkje skal oppdage proxyar frå miljøet, set reglane før den første førespurnaden:
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 påverkar òg miljørelatert sertifikatoppsett og automatisk netrc-autentisering. Ta omsyn til desse avhengnadene før valet. For ei godkjend privat CA-sertifikatsamling kan du oppgi ein uttrykkeleg stig:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Bruk den faktisk godkjende samlinga og lat verifiseringa stå på. Hald ein separat Session for kvar rutingsregel i staden for å endre éin medan anna arbeid brukar han.
Dersom ingen av alternativa forklarer ruta til programmet, samanlikn ein isolert Session med programmet i same køyremiljø og mot same ufarlege mål. Noter kva proxyvariablar som finst, verdien av trust_env og om kallet oppgir proxies; hald URL-ar med innloggingsopplysningar ute av delte loggar. Suksess i isolasjon rettar neste undersøking mot oppretting av Session, adapterar, flytar med førebudde førespurnader eller eigne transportar. Ein miljøtest med curl avgjer ikkje den eigne samanslåingsåtferda til Requests.