Session-proxy’s in Python Requests en voorrang van die omgewing
Maak Python Requests se roetering voorspelbaar wanneer session.proxies, omgewingsveranderlikes, versoekinstellings en trust_env saamwerk.
As session.proxies na een eindpunt wys maar die skrip die dop se proxy gebruik, sal die hertoewysing van dieselfde woordeboek nie die konflik oplos nie. Requests kan omgewingsproxyinstellings bo Session se verstekke saamsmelt. Kies of Session steeds instellings uit die omgewing moet ontdek.
Behou omgewingsontdekking, verskaf roetes in die versoek
Gee uitdruklike waardes aan die individuele oproep, soos Requests aanbeveel om dié konflik tussen Session en omgewing te vermy:
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()
Vervang die plaaslike luisteraar met jou eie. As jy openbare HTTP-eindpunte vergelyk, kies kandidate uit die HTTP-instaanbedienerlys en hou die Session-beleid vas. Dit beheer die verskafte karteringinskrywings; kies doelbewus ook vir ander skemas of gashere wat die toepassing gebruik. ’n Diens, IDE, houer of CI-uitvoerder kan ’n ander omgewing as die terminaal erf.
Laat Session sy eie instellings beheer
As die toepassing nie proxy’s uit die omgewing moet ontdek nie, stel die beleid voor die eerste versoek:
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 beïnvloed ook omgewingsverwante sertifikaatkonfigurasie en outomatiese netrc-stawing. Neem dié afhanklikhede in ag voordat jy dit kies. Vir ’n goedgekeurde private CA-bundel kan jy ’n uitdruklike pad gee:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Gebruik die werklik goedgekeurde bundel en laat verifikasie aan. Hou ’n afsonderlike Session vir elke roeteringsbeleid eerder as om een te verander terwyl ander werk dit gebruik.
As geen alternatief die toepassing se roete verduidelik nie, vergelyk ’n geïsoleerde Session met die toepassing in dieselfde looptydomgewing en na dieselfde onskadelike bestemming. Teken aan watter proxyveranderlikes bestaan, die waarde van trust_env en of die oproep proxies deurgee; hou URL’s met aanmeldbesonderhede uit gedeelde logboeke. Geïsoleerde sukses rig die volgende ondersoek op Session-konstruksie, aanpassers, vloeie vir voorbereide versoeke of pasgemaakte vervoerlae. ’n curl-omgewingstoets bepaal nie Requests se eie saamsmeltgedrag nie.