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 को लॉग से बाहर रखें।