एउटा 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)

लुपब्याक ठेगानालाई आफ्नो HTTP प्रोक्सीले बदल्नुहोस् वा प्रोक्सीमार्फत तुलनाका लागि HTTP प्रोक्सी सूचीबाट उम्मेदवार छान्नुहोस्। सेवाले अनुमति दिएमा यसले HTTPS लक्ष्यको जडान CONNECT मार्फत बोक्न सक्छ। सुन्ने सेवाको प्रोटोकल र प्रमाणीकरण समर्थन ह्यान्डलरसँग मिल्नुपर्छ।

पूर्वनिर्धारित opener नबदल्नुहोस्

मार्गको जिम्मा भएको वस्तुमार्फत direct.open वा proxied.open कल गर्नुहोस्। install_opener ले urllib का सुविधा कलहरूले प्रयोग गर्ने प्रक्रियाभरिको पूर्वनिर्धारित वस्तु बदल्छ; त्यसैले यसलाई प्रयोग गर्ने लाइब्रेरीले असम्बन्धित कोडलाई असर गर्न सक्छ। माथिको अलग opener का लागि यो आवश्यक छैन।

timeout आर्गुमेन्ट एउटा अपरेसनको सेटिङ हो, हरेक स्थानान्तरणको सम्पूर्ण वास्तविक समयसीमा होइन। कामलाई चाहिने डाटा मात्र पढ्नुहोस् र कडा कुल समय बजेट भए उच्च तहको समयसीमा प्रयोग गर्नुहोस्।

यी opener वस्तुहरूले अर्को लाइब्रेरीको क्लाइन्ट, विद्यमान प्रक्रिया वा ब्राउजरको प्रोक्सी सेटिङ बदल्दैनन्।

सम्बन्धित लेखहरू