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 ને નિયમિત લોગની બહાર રાખો.