Proxyji Sessiona u Python Requests i prednost okruženja
Učinite usmjeravanje Python Requests predvidljivim pri djelovanju session.proxies, varijabli okruženja, postavki zahtjeva i trust_env.
Ako session.proxies pokazuje na jednu krajnju točku, a skripta koristi proxy ljuske, ponovna dodjela istog rječnika neće riješiti sukob. Requests može spojiti postavke proxyja iz okruženja s prednošću pred 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 pojedinom 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. Uspoređujete li javne HTTP točke, birajte kandidate s popisa HTTP proxyja uz nepromijenjenu politiku Sessiona. Time upravljate predanim stavkama mapiranja; svjesno odlučite i za druge sheme ili domaćine aplikacije. Usluga, IDE, spremnik ili CI izvršitelj može naslijediti drukčije okruženje od terminala.
Neka Session upravlja vlastitim 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 utječe i na konfiguraciju certifikata povezanu s okruženjem te automatsku netrc autentifikaciju. Prije izbora uzmite u obzir te ovisnosti. Za odobren 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 odobren paket i ostavite provjeru uključenu. Za svaku politiku usmjeravanja zadržite zaseban Session umjesto mijenjanja jednog dok ga drugi poslovi koriste.
Ako nijedna mogućnost ne objašnjava rutu aplikacije, usporedite izolirani 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 vjerodajnicama izostavite iz dijeljenih dnevnika. Izolirani uspjeh usmjerava sljedeću provjeru na stvaranje Sessiona, prilagodnike, tokove pripremljenih zahtjeva ili vlastite transporte. Test okruženja curlom ne određuje vlastito ponašanje spajanja Requestsa.