Konverter IPv4 ip:port:user:password-oppføringar for Requests
Del ip:port:user:password med ei avgrensa splitting og kod innloggingsopplysningane før du byggjer proxy-kartet.
For IPv4-formatet ip:port:user:password til ein HTTP-proxyleverandør, konverter felta før du gir verdien til 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}
Den avgrensa splittinga tek vare på eventuelle ekstra kolon i passordet. Å fjerna berre linjesluttar unngår òg å fjerna mellomrom som kan høyra til ein innloggingsopplysning, utan å seia frå.
Kod brukarnamnet og passordet som separate URL-komponentar. Ein @ i eit rått passord må ikkje forvekslast med skiljeteiknet før proxyverten. Denne funksjonen ventar råe innloggingsopplysningar; sender du tekst som alt er koda, kan prosentteiknet bli koda på nytt.
Kartet som blir returnert, vel denne proxyen for HTTP- og HTTPS-destinasjonar. Ein nøkkel som http://192.0.2.10 har ei anna meining i Requests: han vel ei rute for den destinasjonsverten. Han er ikkje ein indeks for ei gruppe proxyservarar.
Parseren godtek med vilje det oppgjevne IPv4-formatet. Han dekkjer ikkje brukarnamn med kolon eller IPv6-adresser utan klammer; dei treng eit eintydig inndataformat. Hald genererte URL-ar med innloggingsopplysningar unna vanlege loggar.