Vir 'n HTTP-proxyverskaffer se IPv4-formaat ip:port:user:password, skakel die velde om voordat die waarde aan Requests gegee word:

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}

Die begrensde splitsing behou enige bykomende dubbelpunte in die wagwoord. Om slegs reëindes te verwyder verhoed ook dat spasies wat aan 'n geloofsbrief kan behoort, stilweg gestroop word.

Kodeer die gebruikersnaam en wagwoord as afsonderlike URL-komponente. 'n @ in 'n rou wagwoord moenie met die skeier voor die proxy-gasheer verwar word nie. Hierdie funksie verwag rou geloofsbriewe; as jy reeds gekodeerde teks deurgee, kan die persentteken weer gekodeer word.

Die teruggekeerde kaart kies hierdie proxy vir HTTP- en HTTPS-bestemmings. 'n Sleutel soos http://192.0.2.10 beteken iets anders in Requests: dit kies 'n roete vir daardie bestemming-gasheer. Dit is nie 'n indeks in 'n poel proxyservers nie.

Die ontleder aanvaar doelbewus net die genoemde IPv4-formaat. Dit dek nie gebruikersname met dubbelpunte of IPv6-adresse sonder hakies nie; dié het 'n ondubbelsinnige invoerformaat nodig. Hou gegenereerde URL's met geloofsbriewe uit roetine-logboeke.

Verwante artikels