os.system("unset http_proxy") نېمە ئۈچۈن ھېچ نەرسىنى ئۆزگەرتمەيدۇ
Proxy ئۆزگەرگۈچىسىنى توغرا Python جەريانىدىن چىقىرىڭ ياكى بالا بۇيرۇققا كونترول قىلىنغان مۇھىت بېرىڭ.
تۆۋەندىكى چاقىرىقلار ئىككى ئايرىم shell جەريانى قۇرىدۇ:
os.system('unset http_proxy')
os.system('curl https://example.com/')
بىرىنچى shell ئۆزگەرگۈچىنى ئۆز مۇھىتىدىن چىقىرىپ چېكىنىدۇ. Python جەريانىدا يەنىلا ئەسلى قىممەت بار. ئىككىنچى shell ئۇنى قايتا مىراس ئالىدۇ.
بالىغا مەقسەت قىلغان مۇھىتىڭىزنى بېرىڭ
پەقەت بىر بۇيرۇق مىراس ئېلىنغان proxy ئۆزگەرگۈچىلىرىسىز ئىجرا قىلىنىشقا تېگىشلىك بولغاندا، Python مۇھىتىنى كۆچۈرۈپ، كۆچۈرمىنى بالىغا يەتكۈزۈڭ:
import os
import subprocess
env = os.environ.copy()
for name in ('http_proxy', 'https_proxy', 'all_proxy',
'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY'):
env.pop(name, None)
subprocess.run(['curl', '--proxy', '', 'https://example.com/'],
env=env, check=True)
curl نىڭ ئېنىق قۇرۇق proxy تەڭشىكى curl نىڭ ئۆز سەپلىمىسىدىكى proxy تاللىشىنىمۇ بىكار قىلىدۇ. مۇھىت كۆچۈرمىسى بۇيرۇق ئېھتىياجلىق بولۇشى مۇمكىن بولغان باشقا قىممەتلەرنى ساقلايدۇ. ئۇنىڭ ئورنىغا قۇرۇق مۇھىت يەتكۈزۈش ئىجرا قىلىنىدىغان ھۆججەت ئىزدەش يوللىرى ۋە مۇناسىۋەتسىز ئەپ سەپلىمىلىرىنى چىقىرىۋېتىشى مۇمكىن.
Python جەريانىنىڭ ئۆزىدىكى كېيىنكى مەشغۇلاتلار ئۈچۈن os.environ نى قەستەن ئۆزگەرتىڭ. بۇ يېڭى قۇرۇلغان بالىلارنىڭ نېمىنى مىراس ئېلىشىغا تەسىر كۆرسىتىدۇ؛ ئاتا تېرمىنالنىڭ مۇھىتى نى قايتا يازمايدۇ ۋە تەڭشەكلىرىنى ئاللاقاچان تۇتقان HTTP خېرىدارلىرىنى چوقۇم قايتا سەپلىمەيدۇ.
subprocess API env پارامېتىرىنى ھۆججەتلەشتۈرىدۇ، os.environ بولسا Python نىڭ جەريان مۇھىتىنى تەسۋىرلەيدۇ. دەل مۇشۇ دائىرىلەر سەۋەبىدىن shell بۇيرۇقى مۇۋەپپەقىيەت دوكلات قىلىدۇ، ئەمما كېيىنكى تەلەپ يەنىلا كونا proxy نى ئىشلىتىدۇ.
ئاخىرىدا، ھەقىقەتەن ئىجرا قىلىۋاتقان خېرىدارنى تەكشۈرۈڭ. مۇھىت ئۆزگەرگۈچىلىرى پەقەت بىر سەپلىمە كىرگۈزۈشى. ئېنىق proxy تاللىنىشى ياكى ئەپنىڭ ئۆز سەپلىمىسى بۇ ئۆزگەرگۈچىلەر يوقالغاندىن كېيىنمۇ proxy تاللاشنى داۋاملاشتۇرالايدۇ.