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-കൾ സാധാരണ ലോഗുകളിൽ നിന്ന് ഒഴിവാക്കുക.

അനുബന്ധ ലേഖനങ്ങൾ