Requests PreparedRequest na mipangilio ya mazingira inayokosekana
Weka maombi maalumu yaliyotayarishwa yakilingana na ushughulikiaji wa kawaida wa proksi na CA wa Requests bila kudhani kila send ya kiwango cha chini inapuuza proksi.
Ombi linaweza kufanya kazi kupitia session.get() na kushindwa uthibitishaji wa cheti baada ya kuandikwa upya kama PreparedRequest. Njia ya send ya kiwango cha chini haifanyi muunganiko uleule wa mazingira kama mbinu ya kawaida ya 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)
Unganisha ukitumia URL ya mwisho iliyotayarishwa baada ya mabadiliko ya URL yaliyokusudiwa. Maamuzi ya proksi na kupita pembeni yanategemea lengo, hivyo mipangilio ya URL ya awali inaweza kuwa mibaya kwa ombi linalotumwa kweli.
Mpangilio wa CA ni rahisi kuukosa
Uaminifu wa kawaida wa mazingira ukiwashwa, muunganiko unazingatia REQUESTS_CA_BUNDLE na mbadala wake CURL_CA_BUNDLE ikiwa uthibitishaji haujabadilishwa wazi. Kuita send moja kwa moja kwa verify ya kawaida hakufanyi utafutaji huo wa CA. Kuzima uthibitishaji kunaficha tofauti badala ya kutoa hifadhi ya vyeti iliyokusudiwa.
Session.prepare_request() pia hutumia tabia ya maandalizi ya kipindi. Kutengeneza ombi moja kwa moja kwa Request.prepare() ni chaguo tofauti; usitegemee vidakuzi vya kipindi au maandalizi mengine ya kipindi kuwekwa kiotomatiki.
Proksi zina kanuni mahususi zaidi
Si sahihi kusema kila PreparedRequest inapuuza vigeu vya mazingira vya proksi. Katika Requests 2.34.2, send hutafuta proksi za kawaida ikiwa hoja iliyopewa jina proxies haipo. Kutoa proxies={} kwa send kunaruka tawi hilo mahususi la kutafuta thamani za kawaida.
Kamusi tupu inayopewa merge_environment_settings ina jukumu tofauti: muunganiko unaweza kuijaza njia za mazingira zinazotumika kabla ya kuipitisha kwa send. Kuangalia kamusi tupu tu katika vipande viwili kunakosa mbinu tofauti zinazoipokea.
Katika msimbo wako wa kujenga maombi, weka maandalizi, kuunganisha mazingira na kutuma pamoja. Programu inapotumia trust_env=False kwa makusudi, muunganiko unaheshimu sera hiyo; haulazimishi mipangilio ya mazingira kwa mteja aliyeizima kwa makusudi.