Zahtjev može raditi kroz session.get(), a nakon prepisivanja u PreparedRequest pasti na provjeri certifikata. Niskonivojski send put ne izvodi isto spajanje okruženja kao normalni request metod.

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)

Spajajte koristeći konačni pripremljeni URL, nakon željenih promjena URL-a. Odluke o proxyju i zaobilaženju zavise od odredišta, pa postavke prikupljene za raniji URL mogu biti pogrešne za zahtjev koji stvarno šaljete.

CA postavku lako je previdjeti

Uz uključeno normalno povjerenje u okruženje, spajanje razmatra REQUESTS_CA_BUNDLE i njegov rezervni CURL_CA_BUNDLE kada provjera nije izričito prebrisana. Direktan poziv send s podrazumijevanim verify ne obavlja tu CA pretragu. Isključivanje provjere skriva razliku umjesto da pruži namjeravano spremište certifikata.

Session.prepare_request() primjenjuje i ponašanje pripreme sesije. Direktno kreiranje zahtjeva kroz Request.prepare() zaseban je izbor; ne očekujte automatsku primjenu sesijskih kolačića ili druge sesijske pripreme.

Proxyji imaju preciznije pravilo

Ne bi bilo tačno reći da svaki PreparedRequest ignoriše proxy varijable okruženja. U Requests 2.34.2 send razrješava podrazumijevane proxyje kada nedostaje ključni argument proxies. Davanje proxies={} metodu send preskače tu konkretnu granu razrješavanja.

Prazan rječnik proslijeđen u merge_environment_settings ima drugu ulogu: spajanje ga može popuniti primjenjivim putanjama iz okruženja prije slanja metodu send. Gledanje samo praznog rječnika u dva primjera zanemaruje različite metode koje ga primaju.

U prilagođenom kodu za gradnju zahtjeva držite pripremu, spajanje okruženja i slanje zajedno. Kada aplikacija namjerno koristi trust_env=False, spajanje poštuje tu politiku; nije način da se postavke okruženja nametnu klijentu koji ih je svjesno isključio.

Povezani članci