प्रमाणिकरण विवरण सही भए पनि @ वा # भएको पासवर्डले हातले बनाइएको प्रोक्सी URL बिगार्न सक्छ। यी अक्षरको URL मा पहिल्यै अर्थ छ, त्यसैले क्लाइन्टले पासवर्डको भागलाई होस्टनाम वा फ्र्यागमेन्ट मान्न सक्छ।

प्रमाणिकरणका दुई क्षेत्र छुट्टाछुट्टै एन्कोड गर्नुहोस्

यो उदाहरणले URL का संरचनात्मक विभाजक जोगाउँछ र प्रयोगकर्तानाम तथा पासवर्ड मात्र एन्कोड गर्छ:

from urllib.parse import quote

username = "user@team"
password = "p:a/ss#?"
proxy_url = (
    "http://"
    + quote(username, safe="")
    + ":"
    + quote(password, safe="")
    + "@203.0.113.10:8080"
)

आफ्नो वास्तविक एन्डपोइन्ट र प्रमाणिकरण विवरण प्रयोग गर्नुहोस्। देखाइएको ठेगाना दस्तावेजको उदाहरण हो। खाली safe आर्गुमेन्ट महत्त्वपूर्ण छ: quote ले सामान्यतः स्ल्यास एस्केप नगरी छोड्छ, तर यो प्रमाणिकरण क्षेत्रमा स्ल्यास एन्कोड गर्नुपर्छ।

पूरै प्रोक्सी URL एन्कोड नगर्नुहोस्। स्किमका विभाजक र प्रमाणिकरण विवरण तथा होस्टबीचको @ एन्कोड गर्दा जोगाउन खोजेको संरचना नष्ट हुन्छ। पहिले नै एन्कोड गरिएको पासवर्ड फेरि एन्कोड गर्न पनि छोड्नुहोस्।

नतिजा Requests सँग प्रयोग गर्नुहोस्

import requests

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy_url, "https": proxy_url},
    timeout=(5, 15),
)
response.raise_for_status()

अनुरोध अझै विफल भए प्रोक्सीले लगइन अस्वीकार गरेको हो कि क्लाइन्ट पहिले पार्सिङ वा जडानमा विफल भएको हो हेर्नुहोस्। 407 प्रमाणिकरण चुनौती र अमान्य URL फरक विफलता हुन्।

HTTPX ले प्रमाणिकरण अलग राख्न सक्छ

HTTPX को Proxy वस्तुले एन्डपोइन्ट र प्रमाणिकरण विवरण अलग आर्गुमेन्टका रूपमा लिन सक्छ:

import httpx

proxy = httpx.Proxy(
    "http://203.0.113.10:8080",
    auth=("user@team", "p:a/ss#?"),
)

with httpx.Client(proxy=proxy, trust_env=False, timeout=15) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()

यसले userinfo भाग आफैँ बनाउनुपर्ने आवश्यकता हटाउँछ। यसले प्रमाणिकरण विवरण प्रोक्सी जडानबाट स्वतन्त्र रूपमा इन्क्रिप्ट गर्दैन वा सबै सेवाले समर्थन गर्ने प्रमाणिकरण विधि छान्दैन।

निःशुल्क सूचीले IP र पोर्ट मात्र दिए यो उदाहरणले पूर्वनिर्धारित प्रमाणिकरण विवरण दिँदैन। सञ्चालकले साँच्चै खाता दिए मात्र प्रमाणिकरण प्रयोग गर्नुहोस्। प्रमाणिकरण विवरण भएका URL साझा लग र स्रोत फाइलमा नराख्नुहोस्।

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