Requests PreparedRequest እና የጎደሉ የአካባቢ ቅንብሮች
ሁሉም ዝቅተኛ send ፕሮክሲዎችን ችላ ይላሉ ብለው ሳይገምቱ፣ የራስዎን የተዘጋጁ ጥያቄዎች ከRequests መደበኛ ፕሮክሲና CA አያያዝ ጋር ያዛምዱ።
ጥያቄ በ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 የproxies ቁልፍ ቃል ግቤት ካልቀረበ send ነባሪ ፕሮክሲዎችን ይወስናል። proxies={}ን ለsend መስጠት ያንን ልዩ ነባሪ መወሰኛ ቅርንጫፍ ያልፈዋል።
ለmerge_environment_settings የሚሰጠው ባዶ መዝገበ ቃላት ሌላ ሚና አለው፤ ውህደቱ ለsend ከመላኩ በፊት በሚመለከቱ የአካባቢ መንገዶች ሊሞላው ይችላል። በሁለት ኮዶች ውስጥ ባዶ መዝገብ ብቻ ማየት የሚቀበሉትን የተለያዩ ዘዴዎች ያስቀራል።
በራስዎ ጥያቄ ግንባታ ኮድ ዝግጅትን፣ የአካባቢ ውህደትንና መላክን አንድ ላይ ያቆዩ። መተግበሪያው ሆን ብሎ trust_env=Falseን ሲጠቀም ውህደቱ ያንን ፖሊሲ ያከብራል፤ በፈቃዱ ያጠፋቸው ደንበኛ ላይ የአካባቢ ቅንብሮችን በግድ አያስገባም።