Եթե session.proxies-ը ցույց է տալիս մի վերջնակետ, բայց սկրիպտը գործածում է հրամանային թաղանթի պրոքսին, նույն բառարանը նորից վերագրելը չի լուծի հակասությունը։ Requests-ը կարող է միջավայրի պրոքսիի կարգավորումները միավորել Session-ի լռելյայններից բարձր առաջնահերթությամբ։ Ընտրեք՝ արդյոք Session-ը պետք է շարունակի կարգավորումներ հայտնաբերել միջավայրից։

Պահեք միջավայրի հայտնաբերումը, երթուղին տվեք հարցման մեջ

Փոխանցեք բացահայտ արժեքներ առանձին կանչին, ինչպես Requests-ը խորհուրդ է տալիս Session-ի և միջավայրի այս հակասությունից խուսափելու համար․

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

Տեղային լսողը փոխարինեք ձերով։ Հանրային HTTP վերջնակետեր համեմատելիս թեկնածուներ ընտրեք HTTP պրոքսիների ցանկից՝ Session-ի քաղաքականությունը պահելով անփոփոխ։ Սա կառավարում է տրված համապատասխանեցման գրառումները․ գիտակցված ընտրություն արեք նաև հավելվածի այլ սխեմաների կամ հոսթերի համար։ Ծառայությունը, IDE-ն, կոնտեյները կամ CI գործարկիչը կարող են տերմինալից տարբեր միջավայր ժառանգել։

Թող Session-ը կառավարի իր կարգավորումները

Եթե հավելվածը չպետք է պրոքսիներ հայտնաբերի միջավայրից, քաղաքականությունը սահմանեք առաջին հարցումից առաջ․

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-ը նաև ազդում է միջավայրի հետ կապված վկայականների կարգավորման և ավտոմատ netrc նույնականացման վրա։ Ընտրելուց առաջ հաշվի առեք այդ կախվածությունները։ Հաստատված մասնավոր CA փաթեթի համար կարող եք բացահայտ ուղի փոխանցել․

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

Օգտագործեք իսկապես հաստատված փաթեթը և ստուգումը պահեք միացված։ Ամեն երթուղավորման քաղաքականության համար պահեք առանձին Session՝ մեկը այլ աշխատանքների օգտագործման ընթացքում փոխելու փոխարեն։

Եթե ոչ մի տարբերակ չի բացատրում հավելվածի երթուղին, համեմատեք մեկուսացված Session-ը հավելվածի հետ նույն գործարկման միջավայրում և նույն անվնաս նպատակակետով։ Գրանցեք առկա պրոքսիի փոփոխականները, trust_env-ի արժեքը և արդյոք կանչը փոխանցում է proxies․ մուտքի տվյալներով URL-ները մի ներառեք ընդհանուր մատյաններում։ Մեկուսացված հաջողությունը հաջորդ ստուգումը ուղղում է Session-ի ստեղծմանը, ադապտերներին, պատրաստված հարցումների հոսքերին կամ հատուկ փոխադրամիջոցներին։ curl-ով միջավայրի փորձը չի որոշում հենց Requests-ի միավորման վարքը։

Առնչվող հոդվածներ