Python Requests-ի Session պրոքսիները և միջավայրի առաջնահերթությունը
Դարձրեք Python Requests-ի երթուղավորումը կանխատեսելի session.proxies-ի, միջավայրի փոփոխականների, հարցման պարամետրերի և trust_env-ի փոխազդեցության ժամանակ։
Եթե 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-ի միավորման վարքը։