Հարցումը կարող է աշխատել 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-ում send-ը որոշում է լռելյայն պրոքսիները, երբ բացակայում է proxies անվանված արգումենտը։ send-ին proxies={} տալը բաց է թողնում հենց այդ լռելյայն որոշման ճյուղը։

merge_environment_settings-ին տրված դատարկ բառարանն այլ դեր ունի․ միաձուլումը կարող է այն լրացնել միջավայրի համապատասխան ուղիներով՝ send-ին փոխանցելուց առաջ։ Երկու հատվածում միայն դատարկ բառարան տեսնելը բաց է թողնում այն ընդունող տարբեր մեթոդները։

Հատուկ հարցում կառուցող կոդում պատրաստումը, միջավայրի միաձուլումն ու ուղարկումը պահեք միասին։ Երբ հավելվածը դիտմամբ օգտագործում է trust_env=False, միաձուլումը հարգում է այդ քաղաքականությունը․ այն միջավայրի կարգավորումներ չի պարտադրում դրանք գիտակցաբար անջատած հաճախորդին։

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