Session-proxy’s in Python Requests en voorrang van de omgeving
Maak routering in Python Requests voorspelbaar bij de wisselwerking tussen session.proxies, omgevingsvariabelen, verzoekopties en trust_env.
Als session.proxies naar één eindpunt wijst maar het script de proxy van de shell gebruikt, lost hetzelfde woordenboek opnieuw toewijzen het conflict niet op. Requests kan proxyinstellingen uit de omgeving samenvoegen met voorrang op Session-standaardwaarden. Kies of Session instellingen uit de omgeving moet blijven ontdekken.
Behoud omgevingsdetectie en geef routes mee aan het verzoek
Geef expliciete waarden mee aan elke aanroep, zoals Requests aanbeveelt om dit conflict tussen Session en omgeving te vermijden:
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 het lokale luisteradres door je eigen adres. Vergelijk je openbare HTTP-eindpunten, kies dan kandidaten uit de HTTP-proxylijst en houd het Session-beleid gelijk. Dit beheert de opgegeven toewijzingsvermeldingen; maak ook een bewuste keuze voor andere schema’s of hosts die de toepassing gebruikt. Een dienst, IDE, container of CI-runner kan een andere omgeving erven dan je terminal.
Laat Session zijn eigen instellingen beheren
Als de toepassing geen proxy’s uit de omgeving moet ontdekken, stel het beleid dan vóór het eerste verzoek in:
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ïnvloedt ook omgevingsgebonden certificaatinstellingen en automatische netrc-authenticatie. Houd rekening met die afhankelijkheden voordat je dit kiest. Voor een goedgekeurde privébundel met CA-certificaten kun je een expliciet pad meegeven:
response = session.get(
"https://example.com/",
timeout=(5, 15),
verify="/path/to/approved-ca-bundle.pem",
)
Gebruik de werkelijk goedgekeurde bundel en laat verificatie aanstaan. Houd voor elk routeringsbeleid een aparte Session aan, in plaats van één Session te wijzigen terwijl ander werk die gebruikt.
Verklaart geen alternatief de route van de toepassing, vergelijk dan een geïsoleerde Session met de toepassing in dezelfde runtime en naar hetzelfde onschadelijke doel. Leg aanwezige proxyvariabelen, de waarde van trust_env en het meegeven van proxies vast; houd URL’s met inloggegevens buiten gedeelde logs. Succes in isolatie richt het volgende onderzoek op Session-opbouw, adapters, verwerkingspaden voor voorbereide verzoeken of eigen transporten. Een curl-omgevingstest beslist niet over het eigen samenvoeggedrag van Requests.