Proxy ئارقىلىق بىر-بىرىگە قاراشلىق يۆتكىلىشنى ئەگىشىش
بىر-بىرىگە قاراشلىق Location نى ھازىرقى نىشان URL غا قارىتىپ ھەل قىلىڭ، proxy ئادرېسىنى URL ھەل قىلىشتىن سىرتقا چىقىرىڭ.
Proxy ئارقىلىق كەلگەن جاۋاب بىر-بىرىگە قاراشلىق Location نى قايتۇرۇشى مۇمكىن:
Location: ../new/
زامانىۋى HTTP بۇ يەردە URI نەقىلىگە يول قويىدۇ. ئۇنى جاۋابنى ھاسىل قىلغان URL غا قارىتىپ ھەل قىلىڭ. ئەگەر ئۇ URL https://docs.example/catalog/old/ بولسا، يۇقىرىدىكى نەقىل https://docs.example/catalog/new/ نى كۆرسىتىدۇ. Proxy نىڭ host نامى ئاساس ئەمەس.
ئادەتتىكى Python urllib تەلەپلىرى ئۈچۈن proxy ئاخىرلاشقۇچى ئەتراپىدا تىزىق باغلاش ئورنىغا ئۇنىڭ يۆتكەش بىر تەرەپ قىلغۇچىسىنى ئىشلىتىڭ:
opener = build_opener(ProxyHandler({
"https": "http://proxy.example:8080",
}))
with opener.open("https://docs.example/catalog/old/",
timeout=15) as response:
final_url = response.geturl()
Proxy دەلىللەش بولمىغان بۇ ئاممىۋى ھۆججەت تەلىپى ئۈچۈن، يول رۇخسەت قىلىنغاندا HTTP proxy تىزىملىكىدىن بىر HTTP نامزاتى مىسال ئاخىرلاشقۇچىنىڭ ئورنىنى ئالىدۇ. سىنىپلار urllib.request تىن كېلىدۇ. ئۇنىڭ نورمال بىر تەرەپ قىلغۇچىسى قوللايدىغان يۆتكەشلەرنى ئۆز چېكى ئىچىدە ئەگىشىدۇ. final_url بايلىقنىڭ ئاخىرقى URL نى تەسۋىرلەيدۇ، ئۇنىڭغا يېتىش ئۈچۈن ئىشلىتىلگەن ۋاسىتىچىنى ئەمەس.
ئالدى بىلەن ھەل قىلىڭ، ئاندىن كېيىنكى يولنى تاللاڭ
يۆتكەش نىشان host ياكى سىخېمىنى ئۆزگەرتىشى مۇمكىن. شۇڭا نىشانغا ئاساسلانغان proxy سىياسىتى يەنە شۇ يېڭى URL نىمۇ باھالىشى كېرەك. بىرىنچى host ئۈچۈن ئىشلىگەن يول كېيىنكىسى ئۈچۈن يول بولماسلىقى مۇمكىن.
يۆتكەشنى بىر تەرەپ قىلىشنى ئۆزىڭىز يۈرگۈزگەندە، نۇقتا بۆلەكلىرىنى بىر تەرەپ قىلىدىغان URI نەقىل ھەل قىلىشىنى ئىشلىتىڭ. ھەقىقىي ھالەت كودىنىڭ ئۇسۇل قائىدىلىرىنى ساقلاڭ ۋە يۆتكەش چېكى بەلگىلەڭ. Location نى host نامىغا ئۇلاش ئۇ ھەل قىلىش ئالگورىتمىنىڭ ئورنىنى ئالمايدۇ.
ئەگەر يۆتكەش مەغلۇپ بولسا، تەلەپ قىلىنغان URL، جاۋاب ھالىتى، Location قىممىتى ۋە ھەل قىلىنغان كېيىنكى URL نى ساقلاڭ. بۇ تۆت قىممەت ئادەتتە مەغلۇبىيەتنىڭ URL قۇرۇلۇشىغا ياكى كېيىن سىنالغان ئۇلىنىشقا تەۋە ئىكەنلىكىنى كۆرسىتىدۇ.