Proxy تەكشۈرگۈچلەردە ئومۇمىي urllib opener ئۆزگەرتىشتىن ساقلىنىڭ
urllib proxy تەكشۈرۈشىنى پۈتۈن جەرياننىڭ يول باشلاش ۋە ۋاقىت چېكى سۈكۈتتىكى قىممەتلىرىنى ئالماشتۇرۇشنىڭ ئورنىغا ئۆز opener ىدا ساقلاڭ.
from urllib.request import ProxyHandler, build_opener
def make_proxy_opener(proxy_uri):
return build_opener(ProxyHandler({
"http": proxy_uri,
"https": proxy_uri,
}))
opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.يول تەكشۈرۈشكە تەۋە بولغاندا بۇ opener نىڭ ئۆز open ئۇسۇلىنى چاقىرىڭ. مىسالنىڭ HTTP ئاخىرقى نۇقتىسى مۇلازىمىتىڭىزدىن ياكى ئاشكارا تەكشۈرۈشلەر ئۈچۈن HTTP proxy تىزىملىكىدىن كەلگەن بولۇشى مۇمكىن. بۇ پارچە ئىگىلىكنى كۆرسىتىدۇ؛ ئۇ تولۇق دەلىللەش ياكى سالامەتلىك سىياسىتىنى بەلگىلىمەيدۇ. ھېساباتقا خاس ھەر قانداق handler نى مەقسەت قىلىنغان client قا باغلاپ تۇتۇڭ.
urllib.request.install_opener() كېيىنكى module دەرىجىلىك urlopen() چاقىرىقلىرى ئىشلىتىدىغان پۈتۈن جەريان سۈكۈتتىكى قىممىتىنى ئۆزگەرتىدۇ. شۇڭا proxy لارنى ئايلانغان تەكشۈرگۈچ مۇناسىۋەتسىز تەلەپلەرنى ئۆزىنىڭ ئاخىرقى نۇقتىسىدا قالدۇرۇپ قويۇشى مۇمكىن. ۋاقىتلىق ئورنىتىش ۋە تازىلاشدا ئەسلىگە قايتۇرۇش يەنىلا ئورتاق ئۆزگەرتىش جەريانىدا قوشۇمچە تەلەپلەرنىڭ يۈرگۈزۈلۈشىگە يول قويىدۇ.
socket.setdefaulttimeout() ئوخشاشلا كېيىن قۇرۇلغان socket لارنىڭ سۈكۈتتىكى قىممەتلىرىنى ئۆزگەرتىدۇ. پەقەت تەكشۈرۈش ئۇنى ئېلىشى كېرەك بولغاندا مەشغۇلات دەرىجىلىك ۋاقىت چېكىنى ئىشلىتىڭ.
تەكشۈرۈش جاۋابلىرىنى تاقاڭ ۋە نەتىجىلەرنى كونكرېت ساقلاڭ: HTTP خاتالىق جاۋابى ئاپتوماتىك ھالدا ئۆلگەن proxy ئاڭلىغۇچى ئەمەس. ئەگەر async مۇلازىمەتتە synchronous urllib تەكشۈرۈشى ئىشلىتىلسە، توسىدىغان خىزمەتنى مۇۋاپىق worker غا يۆتكەڭ؛ بۇ ئىجرا قارارى ئومۇمىي opener ئۆزگەرتىشنى ئايرىم قىلمايدۇ.
تەكشۈرۈش باشقا تور سىياسىتىنى قالدۇرماي ئۆز كۆزىتىشىنى قايتۇرۇشى كېرەك. ئۇنىڭ ئۆز client ئوبيېكتى ۋە چەكلىك مەشغۇلاتى بۇ چېگرانى ئېنىق قىلىدۇ.