Pretvorba vnosov IPv4 ip:port:user:password za Requests
Razčlenite ip:port:user:password z omejenim deljenjem in kodirajte dele poverilnic, preden zgradite zemljevid proxyja.
Če ponudnik proxyja HTTP uporablja obliko IPv4 ip:port:user:password, pretvorite polja, preden vrednost predate 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}
Omejeno deljenje ohrani morebitna dodatna dvopičja v geslu. Če odstranite le konce vrstic, se izognete tudi tihemu odstranjevanju presledkov, ki lahko pripadajo poverilnicam.
Kodirajte uporabniško ime in geslo kot ločene komponente URL. Znaka @ v surovem geslu ne smete zamenjati z ločilom pred gostiteljem proxyja. Ta funkcija pričakuje surove poverilnice; če posredujete že kodirano besedilo, se lahko odstotni znak znova kodira.
Vrnjeni zemljevid izbere ta proxy za cilje HTTP in HTTPS. Ključ, kot je http://192.0.2.10, ima v Requests drug pomen: izbere pot za tega ciljnega gostitelja. To ni indeks za skupino strežnikov proxy.
Razčlenjevalnik namerno sprejme navedeno obliko IPv4. Ne pokriva uporabniških imen z dvopičji ali naslovov IPv6 brez oklepajev; zanje je potrebna nedvoumna vhodna oblika. Ustvarjene URL-je s poverilnicami hranite zunaj običajnih dnevnikov.