Převod záznamů IPv4 ip:port:user:password pro Requests
Rozdělte ip:port:user:password omezeným dělením a zakódujte části přihlašovacích údajů před sestavením mapy proxy.
Pro formát IPv4 od poskytovatele HTTP proxy ip:port:user:password převeďte pole dříve, než hodnotu předáte knihovně 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}
Omezené dělení zachová všechna další dvojtečky uvnitř hesla. Odstranění pouze konců řádků také zabrání tichému oříznutí mezer, které mohou být součástí přihlašovacích údajů.
Zakódujte uživatelské jméno a heslo jako samostatné komponenty URL. Znak @ v surovém hesle si nesmíte splést s oddělovačem před hostitelem proxy. Tato funkce očekává surové přihlašovací údaje; pokud předáte již zakódovaný text, znak procenta se může zakódovat znovu.
Vrácená mapa vybírá tento proxy pro cíle HTTP a HTTPS. Klíč jako http://192.0.2.10 má v Requests jiný význam: vybírá trasu pro tohoto cílového hostitele. Není to index do fondu proxy serverů.
Parser záměrně přijímá pouze uvedený formát IPv4. Nepokrývá uživatelská jména s dvojtečkami ani adresy IPv6 bez hranatých závorek; ty potřebují jednoznačný vstupní formát. Udržujte generované URL s přihlašovacími údaji mimo běžné protokoly.