Python urllib: HTTP درخواستوں کے لیے Basic پراکسی توثیق
Basic HTTP پراکسی چیلنج کے لیے واضح urllib opener بنائیں اور اس عام HTTP تبادلے کو HTTPS CONNECT توثیق سے الگ پہچانیں۔
HTTP پراکسی کی Basic چیلنج کے لیے ProxyBasicAuthHandler استعمال کریں۔ یہ عام HTTP مثال راستہ اور اکاؤنٹ ایک ہی opener میں رکھتی ہے:
import os
from urllib.request import (
ProxyHandler, ProxyBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener,
)
proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
None, proxy_url,
os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
ProxyHandler({'http': proxy_url}),
ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
print(response.status)حقیقی اینڈ پوائنٹ اور آپریٹر کا فراہم کردہ اکاؤنٹ استعمال کریں۔ یہ ہینڈلر پراکسی کی چیلنج کے لیے پاس ورڈ مینیجر استعمال کرتا ہے؛ مطلوبہ پراکسی URI اور realm ملائیں۔ منزل پر Basic توثیق دوسرا ہینڈلر استعمال کرتی ہے۔
opener کو براہِ راست کال کرنا اس سیٹ اپ کو مقامی رکھتا ہے۔ درخواست کا URL درمیانی نہیں، ویب سائٹ ہی رہتا ہے۔ یہ واضح HTTP راستہ Basic تبادلے کو انکرپٹ نہیں کرتا۔
اس مثال سے HTTPS ٹنل کی حمایت کا قیاس نہ کریں۔ CONNECT کے دوران 407 سیٹ اپ کے وقت، عام منزل جواب سے پہلے ہوتا ہے؛ منتخب کردہ انٹیگریشن کو وہیں توثیق سنبھالنی ہوگی۔ ویب سائٹ کا لاگ اِن ہینڈلر بدلنے سے وہ پہلے والا چیلنج ٹھیک نہیں ہو سکتا۔
اسناد رکھنے والے پراکسی URL ایک اور فارمیٹ ہیں جو پرانی مثالوں میں ملتے ہیں۔ اگر استعمال کریں تو URL جدا کاروں کو درست طریقے سے انکوڈ کریں اور بننے والا راز رکھنے والا URL لاگ سے باہر رکھیں۔