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()-ით შექმნა ცალკე არჩევანია; სესიის ქუქიების ან სხვა მომზადების ავტომატურ გამოყენებას ნუ ელით.
პროქსისთვის წესი უფრო კონკრეტულია
არაზუსტი იქნებოდა თქმა, რომ ყველა PreparedRequest პროქსის გარემოს ცვლადებს უგულებელყოფს. Requests 2.34.2-ში send ნაგულისხმევ პროქსებს ადგენს, როცა proxies სახელდებული არგუმენტი აკლია. send-ისთვის proxies={} მიცემა სწორედ ამ განსაზღვრის განშტოებას ტოვებს.
merge_environment_settings-ისთვის მიცემულ ცარიელ ლექსიკონს სხვა როლი აქვს: შერწყმამ შეიძლება გარემოს შესაბამისი გზებით შეავსოს send-ზე გადაცემამდე. ორ ფრაგმენტში მარტო ცარიელი ლექსიკონის დანახვა სხვადასხვა მიმღებ მეთოდს ყურადღების მიღმა ტოვებს.
მორგებულ მოთხოვნის აგების კოდში მომზადება, გარემოს შერწყმა და გაგზავნა ერთად შეინარჩუნეთ. როცა აპლიკაცია განზრახ trust_env=False-ს იყენებს, შერწყმა ამ პოლიტიკას პატივს სცემს და გარემოს პარამეტრებს არ ახვევს კლიენტს, რომელმაც ისინი შეგნებულად გამორთო.