Requests साठी IPv4 ip:port:user:password नोंदी रूपांतरित करा
ip:port:user:password मर्यादित विभाजनाने पार्स करा आणि प्रॉक्सी नकाशा तयार करण्यापूर्वी क्रेडेन्शियल घटक एन्कोड करा.
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 नित्य लॉगपासून दूर ठेवा.