Če session.proxies kaže na eno končno točko, skript pa uporablja proxy lupine, ponovno dodeljevanje istega slovarja ne odpravi spora. Requests lahko združi okoljske nastavitve proxyja s prednostjo pred privzetimi nastavitvami Session. Odločite se, ali naj Session še naprej odkriva nastavitve iz okolja.

Ohranite odkrivanje okolja, poti podajte v zahtevi

Podajte izrecne vrednosti posameznemu klicu, kot Requests priporoča za preprečevanje tega spora med Session in okoljem:

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()

Lokalno poslušajočo točko zamenjajte s svojo. Pri primerjanju javnih HTTP točk izberite kandidate s seznama proxyjev HTTP in ohranite politiko Session. To nadzira podane vnose preslikave; zavestno se odločite tudi za druge sheme ali gostitelje aplikacije. Storitev, IDE, vsebnik ali izvajalnik CI lahko podeduje drugačno okolje od terminala.

Naj Session upravlja svoje nastavitve

Če aplikacija ne sme odkrivati proxyjev iz okolja, nastavite politiko pred prvo zahtevo:

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 vpliva tudi na okoljsko konfiguracijo potrdil in samodejno preverjanje pristnosti netrc. Pred izbiro upoštevajte te odvisnosti. Za odobren zasebni sveženj potrdil CA lahko podate izrecno pot:

response = session.get(
    "https://example.com/",
    timeout=(5, 15),
    verify="/path/to/approved-ca-bundle.pem",
)

Uporabite dejansko odobren sveženj in pustite preverjanje vključeno. Za vsako politiko usmerjanja ohranite ločeno Session, namesto da spreminjate eno, medtem ko jo uporabljajo druga opravila.

Če nobena možnost ne pojasni poti aplikacije, primerjajte izolirano Session z aplikacijo v istem izvajalnem okolju in z neškodljivim ciljem. Zabeležite prisotne proxy spremenljivke, vrednost trust_env in ali klic poda proxies; URL-je s poverilnicami izključite iz deljenih dnevnikov. Izoliran uspeh naslednji pregled usmeri na ustvarjanje Session, prilagodilnike, tokove pripravljenih zahtev ali lastne transporte. Okoljski preizkus s curl ne določi lastnega vedenja Requests pri združevanju.

Sorodni članki