Python urllib: د یوه opener لپاره پراکسۍ بندې کړئ
د نورو مراجعو او د پروسې د چاپېریال له بدلولو پرته په ProxyHandler({}) مستقیم نښلېدونکی urllib opener جوړ کړئ.
کله چې یو urllib opener باید مستقیم ونښلي، ProxyHandler ته تشه نقشه ورکړئ:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
تشه ډکشنري هېڅ پراکسي لاره نه برابروي. د نقشې نه ورکول بیا هینډلر ته اجازه ورکوي چې پراکسۍ له چاپېریال او د پلاتفورم له تنظیمونو ومومي. د جوړولو دا دوه لارې بېلابېلې تګلارې څرګندوي.
بېلګه د Python معیاري کتابتون کاروي او عادي HTTPS تایید ساتي. with بلاک ځواب بندوي، هغه مهال هم چې استثنا له بلاکه د وتلو لامل شي.
په یوه اپلېکېشن کې مستقیمې او د پراکسي له لارې غوښتنې
دوه opener د دوو تګلارو د ساتلو توان لري، بې له دې چې د بلنو ترمنځ د چاپېریال متغیرونه بدل شي:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
د loopback پته په خپل HTTP پراکسي بدله کړئ یا د پراکسي د پرتله کولو لپاره د HTTP پراکسي لېست څخه یو نوماند غوره کړئ. که خدمت اجازه ورکړي، د HTTPS موخې اړیکه د CONNECT له لارې لېږدولای شي. د اورېدونکي پروتوکول او د هویت تایید ملاتړ باید له هینډلر سره برابر وي.
ډیفالټ opener مه بدلوئ
direct.open یا proxied.open د هغې ابجیکټ له لارې راوبلئ چې د لارې مسؤل دی. install_opener د ټولې پروسې هغه ډیفالټ بدلوي چې د urllib اسانه بلنې یې کاروي؛ نو کتابتون چې دا کاروي پر نامربوط کوډ اغېز کولای شي. د پورتني جلا opener لپاره اړتیا ورته نشته.
timeout ارګومېنټ د یوه عملیاتو تنظیم دی، د هر لېږد د ټول تېر شوي واقعي وخت حد نه دی. یوازې د کار اړتیا وړ معلومات ولولئ او که د ټول وخت بودیجه کلکه وي، په لوړه کچه مهلت وکاروئ.
دا opener ابجیکټونه د بل کتابتون مراجع، موجوده پروسه یا د براوزر پراکسي تنظیمونه نه بدلوي.