HTTP प्रॉक्सी प्रदाता के IPv4 प्रारूप ip:port:user:password के लिए, Requests को मान देने से पहले फ़ील्ड बदलें:

from ipaddress import IPv4Address
from urllib.parse import quote

def proxy_map(line):
    host, port, user, password = line.rstrip('\r\n').split(':', 3)
    host = str(IPv4Address(host))
    port = int(port)
    if not 1 <= port <= 65535:
        raise ValueError('Proxy port is out of range')
    credentials = quote(user, safe='') + ':' + quote(password, safe='')
    url = f'http://{credentials}@{host}:{port}'
    return {'http': url, 'https': url}

सीमित विभाजन पासवर्ड के भीतर किसी भी अतिरिक्त कोलन को सुरक्षित रखता है। केवल पंक्ति-अंत हटाने से उन स्थानों को चुपचाप हटाने से भी बचाव होता है जो क्रेडेंशियल का भाग हो सकते हैं।

उपयोगकर्ता नाम और पासवर्ड को अलग URL घटकों के रूप में एन्कोड करें। कच्चे पासवर्ड में @ को प्रॉक्सी होस्ट से पहले वाले विभाजक से नहीं मिलाना चाहिए। यह फ़ंक्शन कच्चे क्रेडेंशियल की अपेक्षा करता है; पहले से एन्कोड किया गया टेक्स्ट देने पर प्रतिशत चिह्न फिर से एन्कोड हो सकता है।

लौटाया गया मैप HTTP और HTTPS गंतव्यों के लिए इस प्रॉक्सी को चुनता है। http://192.0.2.10 जैसी कुंजी का Requests में दूसरा अर्थ है: यह उस गंतव्य होस्ट के लिए मार्ग चुनती है। यह प्रॉक्सी सर्वरों के पूल का सूचकांक नहीं है।

पार्सर जान-बूझकर केवल बताया गया IPv4 प्रारूप स्वीकार करता है। यह कोलन वाले उपयोगकर्ता नामों या बिना कोष्ठक वाले IPv6 पतों को कवर नहीं करता; उनके लिए स्पष्ट इनपुट प्रारूप चाहिए। बनाए गए क्रेडेंशियल-युक्त URL को सामान्य लॉग से दूर रखें।

संबंधित लेख