Requests PreparedRequest және жетіспейтін орта баптаулары
Арнайы дайындалған сұрауларды Requests-тің қалыпты прокси және CA өңдеуімен үйлестіріңіз, әр төмен деңгейлі send проксиді елемейді деп ойламаңыз.
Сұрау 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-де proxies атаулы аргументі болмағанда send әдепкі проксилерді анықтайды. send-ке proxies={} беру дәл осы әдепкі анықтау тармағын өткізіп жібереді.
merge_environment_settings-ке берілген бос сөздіктің рөлі басқа: біріктіру оны send-ке бермей тұрып тиісті орта бағыттарымен толтыра алады. Екі мысалдағы бос сөздікке ғана қарау оны қабылдайтын әртүрлі әдістерді ескермейді.
Арнайы сұрау құру кодында дайындауды, орта біріктіруін және жіберуді бірге ұстаңыз. Қолданба әдейі trust_env=False пайдаланса, біріктіру сол саясатты құрметтейді; ортаны саналы түрде өшірген клиентке баптауды мәжбүрлемейді.