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 लगबाट बाहिर राख्नुहोस्।