Requests PreparedRequest va yetishmayotgan muhit sozlamalari
Har past darajadagi send proksini e’tiborsiz qoldiradi deb o‘ylamasdan, maxsus tayyorlangan so‘rovlarni Requests-ning odatiy proksi va CA ishlashiga mos tuting.
So‘rov session.get() orqali ishlab, PreparedRequest sifatida qayta yozilgach sertifikat tekshiruvida ishlamasligi mumkin. Past darajadagi send yo‘li oddiy request metodidagi bilan bir xil muhit birlashtirishini bajarmaydi.
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)
Ko‘zlangan URL o‘zgarishlaridan keyin yakuniy tayyorlangan URL bilan birlashtiring. Proksi va chetlab o‘tish qarorlari manzilga bog‘liq; avvalgi URL uchun olingan sozlama amalda yuboriladigan so‘rovga noto‘g‘ri bo‘lishi mumkin.
CA sozlamasini unutish oson
Odatiy muhit ishonchi yoqilganda, tekshiruv ochiq ustuvor sozlanmagan bo‘lsa, birlashtirish REQUESTS_CA_BUNDLE va uning zaxirasi CURL_CA_BUNDLE ni hisobga oladi. send-ni standart verify bilan bevosita chaqirish bu CA qidiruvini bajarmaydi. Tekshiruvni o‘chirish ko‘zlangan sertifikat omborini berish o‘rniga farqni yashiradi.
Session.prepare_request() seansning tayyorlash xatti-harakatini ham qo‘llaydi. So‘rovni bevosita Request.prepare() bilan yaratish alohida tanlov; seans kukilari yoki boshqa seans tayyorlashini avtomatik qo‘llashini kutmang.
Proksilar uchun aniqroq qoida bor
Har PreparedRequest proksi muhit o‘zgaruvchilarini e’tiborsiz qoldiradi deyish noto‘g‘ri. Requests 2.34.2-da proxies kalit so‘z argumenti bo‘lmasa send standart proksilarni aniqlaydi. send-ga proxies={} berish aynan shu standart aniqlash tarmog‘ini o‘tkazib yuboradi.
merge_environment_settings-ga berilgan bo‘sh lug‘atning vazifasi boshqa: birlashtirish uni send-ga berishdan oldin tegishli muhit yo‘llari bilan to‘ldirishi mumkin. Ikki parchada faqat bo‘sh lug‘atga qarash uni qabul qiladigan metodlar har xilligini e’tibordan qoldiradi.
Maxsus so‘rov tuzish kodida tayyorlash, muhit birlashtirish va yuborishni birga tuting. Ilova ataylab trust_env=False ishlatsa, birlashtirish shu siyosatga amal qiladi; muhitni ataylab o‘chirgan mijozga sozlamalarni majburan kiritmaydi.