Një kërkesë mund të punojë përmes session.get() dhe të dështojë në verifikimin e certifikatës pasi rishkruhet si PreparedRequest. Rruga send e nivelit të ulët nuk kryen të njëjtin bashkim mjedisi si metoda request normale.

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)

Bashkoni duke përdorur URL-në përfundimtare të përgatitur, pas ndryshimeve të synuara. Vendimet proxy dhe të anashkalimit varen nga destinacioni, ndaj cilësimet për një URL të mëparshme mund të jenë të gabuara për kërkesën që dërgoni.

Cilësimi CA është i lehtë të harrohet

Me besimin normal te mjedisi të aktivizuar, bashkimi shqyrton REQUESTS_CA_BUNDLE dhe rezervën CURL_CA_BUNDLE kur verifikimi nuk është mbishkruar shprehimisht. Thirrja direkte send me verify të parazgjedhur nuk bën atë kërkim CA. Çaktivizimi i verifikimit fsheh dallimin në vend që të japë depon e synuar të certifikatave.

Session.prepare_request() zbaton edhe sjelljen përgatitore të sesionit. Krijimi direkt me Request.prepare() është zgjedhje tjetër; mos prisni cookie të sesionit ose përgatitje tjetër sesioni automatikisht.

Proxy-t kanë rregull më të posaçëm

Do të ishte e pasaktë të thuhej se çdo PreparedRequest injoron ndryshoret e mjedisit proxy. Në Requests 2.34.2, send zgjidh proxy-t e parazgjedhur kur argumenti i emërtuar proxies mungon. Dhënia e proxies={} te send kapërcen pikërisht atë degë.

Fjalori bosh që i jepet merge_environment_settings ka rol tjetër: bashkimi mund ta mbushë me rrugët përkatëse të mjedisit përpara se t’i kalohet send. Duke parë vetëm fjalorin bosh në dy pjesë kodi, humben metodat e ndryshme që e marrin.

Në kodin vetjak për ndërtimin e kërkesave, mbani bashkë përgatitjen, bashkimin e mjedisit dhe dërgimin. Kur aplikacioni përdor qëllimisht trust_env=False, bashkimi e respekton atë politikë; nuk imponon cilësime mjedisi në një klient që i ka çaktivizuar me vetëdije.

Artikuj të ngjashëm