HTTP-proxy pakkuja IPv4-vormingu ip:port:user:password puhul teisendage väljad enne, kui annate väärtuse Requestsile:

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}

Piiratud tükeldamine säilitab paroolis olevad täiendavad koolonid. Ainult reavahetuste eemaldamine hoiab ära ka nende tühikute vaikse eemaldamise, mis võivad mandaadi juurde kuuluda.

Kodeerige kasutajanimi ja parool eraldi URL-i komponentidena. Toores paroolis olevat @ ei tohi segi ajada proxy-hostile eelneva eraldajaga. See funktsioon eeldab tooreid mandaate; juba kodeeritud teksti edastamisel võib protsendimärk uuesti kodeeruda.

Tagastatud kaart valib selle proxy HTTP- ja HTTPS-sihtkohtade jaoks. Võti nagu http://192.0.2.10 tähendab Requestsis midagi muud: see valib marsruudi selle sihtkoha hosti jaoks. See ei ole proxy-serverite kogumi indeks.

Parser aktsepteerib teadlikult ainult kirjeldatud IPv4-vormingut. See ei kata kooloneid sisaldavaid kasutajanimesid ega nurksulgudeta IPv6-aadresse; need vajavad üheselt mõistetavat sisendvormingut. Hoidke loodud mandaate sisaldavad URL-id tavalistest logidest eemal.

Seotud artiklid