Konvertēt IPv4 ip:port:user:password ierakstus Requests vajadzībām
Sadaliet ip:port:user:password ar ierobežotu sadalīšanu un kodējiet akreditācijas datu daļas pirms starpniekservera kartes izveides.
Ja HTTP starpniekservera nodrošinātājs izmanto IPv4 formātu ip:port:user:password, konvertējiet laukus pirms vērtības nodošanas 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}
Ierobežotā sadalīšana saglabā jebkuras papildu kols zīmes parolē. Noņemot tikai rindu beigas, tiek arī izvairīties no klusas atstarpju, kas var piederēt akreditācijas datiem, noņemšanas.
Kodējiet lietotājvārdu un paroli kā atsevišķus URL komponentus. Zīme @ neapstrādātā parolē nav jāsajauc ar atdalītāju pirms starpniekservera saimnieka. Šī funkcija sagaida neapstrādātus akreditācijas datus; ja nododat jau kodētu tekstu, procentu zīme var tikt kodēta vēlreiz.
Atgrieztā karte izvēlas šo starpniekserveri HTTP un HTTPS galamērķiem. Atslēgai, piemēram, http://192.0.2.10, Requests ir cita nozīme: tā izvēlas maršrutu šim galamērķa saimniekam. Tas nav starpniekserveru grupas indekss.
Parsētājs apzināti pieņem norādīto IPv4 formātu. Tas neaptver lietotājvārdus ar kols zīmēm vai IPv6 adreses bez iekavām; tām nepieciešams viennozīmīgs ievades formāts. Turiet ģenerētos URL ar akreditācijas datiem ārpus parastajiem žurnāliem.