IPv4-ynfieringen ip:port:user:password omsette foar Requests
Parse ip:port:user:password mei in beheinde splitsing en kodearje de dielen fan 'e oanmeldgegevens foardat de proxy-kaart boud wurdt.
Foar it IPv4-formaat fan in HTTP-proxyprovider ip:port:user:password omsette jo de fjilden foardat jo de wearde oan Requests jouwe:
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}
De beheinde splitsing bewarret alle ekstra dubbele punten yn it wachtwurd. Allinnich rige-einen fuortsmite foarkomt ek dat spaasjes dy't by oanmeldgegevens hearre kinne, stil fuortsmiten wurde.
Kodearje de brûkersnamme en it wachtwurd as aparte URL-komponinten. In @ yn in rau wachtwurd mei net betize wurde mei de skiedingsstek foar de proxyhost. Dizze funksje ferwachtet rauwe oanmeldgegevens; as jo al kodearre tekst trochjouwe, kin it persintaazjeteken op 'e nij kodearre wurde.
De werombrochte kaart selektearret dizze proxy foar HTTP- en HTTPS-bestimmingen. In kaai lykas http://192.0.2.10 hat in oare betsjutting yn Requests: hy selektearret in rûte foar dy bestimmingshost. It is gjin yndeks yn in poel proxyservers.
De parser akseptearret mei opset allinnich it neamde IPv4-formaat. Hy beslacht gjin brûkersnammen mei dubbele punten of IPv6-adressen sûnder heakjes; dy ferkenne in unmiskenber ynfierformaat. Hâld generearre URL's mei oanmeldgegevens bûten gewoane logs.