Requests PreparedRequest жана жетишпеген чөйрө жөндөөлөрү
Атайын даярдалган суроолорду Requestsтин кадимки прокси жана CA иштетүүсү менен шайкеш сактаңыз, ар бир төмөн деңгээлдүү send проксини эске албайт деп ойлобоңуз.
Суроо session.get() аркылуу иштеп, PreparedRequest болуп кайра жазылгандан кийин сертификат текшерүүсүнөн өтпөй калышы мүмкүн. Төмөн деңгээлдүү send жолу кадимки request методундагыдай чөйрө бириктирүүсүн аткарбайт.
import requests
with requests.Session() as session:
request = requests.Request("GET", "https://example.com/")
prepared = session.prepare_request(request)
settings = session.merge_environment_settings(
prepared.url, {}, None, None, None
)
response = session.send(
prepared,
timeout=(5, 15),
**settings,
)
response.raise_for_status()
print(response.status_code)
Көздөлгөн URL өзгөрүүлөрүнөн кийин акыркы даярдалган URL менен бириктириңиз. Прокси жана айланып өтүү чечимдери багытка көз каранды, ошондуктан мурунку URL жөндөөсү чындап жөнөтүлгөн суроого туура келбеши мүмкүн.
CA жөндөөсүн өткөрүп жиберүү оңой
Кадимки чөйрөгө ишеним күйүп, текшерүү ачык үстөмдөлбөсө, бириктирүү REQUESTS_CA_BUNDLE менен анын запастагы CURL_CA_BUNDLE маанисин эске алат. sendти баштапкы verify менен түз чакыруу бул CA издөөсүн кылбайт. Текшерүүнү өчүрүү көздөлгөн сертификат сактагычын бербей, айырманы жашырат.
Session.prepare_request() сеанстын даярдоо жүрүмүн да колдонот. Суроону түз Request.prepare() аркылуу түзүү өзүнчө тандоо; сеанс cookie-лери же башка сеанс даярдоосу автоматтык болот деп күтпөңүз.
Проксинин тагыраак эрежеси бар
Ар бир PreparedRequest прокси чөйрө өзгөрмөлөрүн эске албайт деп айтуу так эмес. Requests 2.34.2де proxies аттуу аргумент жок болсо send баштапкы проксилерди аныктайт. sendке proxies={} берүү ошол өзгөчө баштапкы аныктоо бутагын өткөрөт.
merge_environment_settingsке берилген бош сөздүктүн милдети башка: бириктирүү аны sendке бергенге чейин ылайыктуу чөйрө жолдору менен толтура алат. Эки мисалда бош сөздүктү гана көрүү аны кабыл алган ар түрдүү методдорду өткөрүп жиберет.
Атайын суроо куруучу коддо даярдоону, чөйрөнү бириктирүүнү жана жөнөтүүнү чогуу кармаңыз. Колдонмо атайылап trust_env=False колдонсо, бириктирүү ошол саясатты сактайт; чөйрөнү атайлап өчүргөн кардарга жөндөөнү күчтөп бербейт.