Prevod záznamov IPv4 ip:port:user:password pre Requests
Rozdeľte ip:port:user:password obmedzeným delením a zakódujte časti prihlasovacích údajov pred zostavením mapy proxy.
Ak poskytovateľ HTTP proxy používa formát IPv4 ip:port:user:password, preveďte polia pred odovzdaním hodnoty do 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}
Obmedzené delenie zachováva všetky ďalšie dvojbodky v hesle. Odstránenie iba koncov riadkov tiež zabráni tichému odstráneniu medzier, ktoré môžu patriť prihlasovacím údajom.
Zakódujte používateľské meno a heslo ako samostatné komponenty URL. Znak @ v surovom hesle sa nesmie zamieňať s oddeľovačom pred hostiteľom proxy. Táto funkcia očakáva surové prihlasovacie údaje; odovzdanie už zakódovaného textu môže znak percenta zakódovať znova.
Vrátená mapa vyberá toto proxy pre cieľe HTTP a HTTPS. Kľúč ako http://192.0.2.10 má v Requests iný význam: vyberá trasu pre daného cieľového hostiteľa. Nie je indexom pre skupinu proxy serverov.
Parser zámerne akceptuje uvedený formát IPv4. Nepokrýva používateľské mená s dvojbodkami ani adresy IPv6 bez zátvoriek; tie potrebujú jednoznačný vstupný formát. Udržujte generované URL s prihlasovacími údajmi mimo bežných záznamov.