Konverter IPv4 ip:port:user:password-poster til Requests
Tolk ip:port:user:password med en afgrænset opdeling, og kod legitimationsdelene, før proxykortet bygges.
For en HTTP-proxyudbyders IPv4-format ip:port:user:password skal du konvertere felterne, før værdien gives 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 afgrænsede opdeling bevarer eventuelle ekstra koloner inde i adgangskoden. At fjerne kun linjeafslutninger forhindrer også, at mellemrum, der kan høre til en legitimationsoplysning, stille fjernes.
Kod brugernavn og adgangskode som separate URL-komponenter. Et @ i en rå adgangskode må ikke forveksles med separatoren før proxyværten. Denne funktion forventer rå legitimationsoplysninger; hvis du sender allerede kodet tekst, kan procenttegnet blive kodet igen.
Det returnerede kort vælger denne proxy til HTTP- og HTTPS-destinationer. En nøgle som http://192.0.2.10 har en anden betydning i Requests: den vælger en rute til den destinationsvært. Det er ikke et indeks i en pulje af proxyservere.
Parseren accepterer med vilje kun det angivne IPv4-format. Den dækker ikke brugernavne med koloner eller IPv6-adresser uden parenteser; de kræver et entydigt inputformat. Hold genererede URL'er med legitimationsoplysninger ude af almindelige logfiler.