Pretvaranje IPv4 unosa ip:port:user:password za Requests
Razdvojite ip:port:user:password ograničenim razdvajanjem i kodirajte dijelove akreditiva prije izgradnje proxy mape.
Za IPv4 format ip:port:user:password HTTP proxy provajdera, pretvorite polja prije nego vrijednost predate Requests-u:
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}
Ograničeno razdvajanje čuva sve dodatne dvotočke unutar lozinke. Uklanjanje samo završetaka redova takođe sprječava tiho uklanjanje razmaka koji mogu pripadati akreditivu.
Kodirajte korisničko ime i lozinku kao zasebne URL komponente. Znak @ u sirovoj lozinci ne smije se zamijeniti s razdjelnikom prije proxy hosta. Ova funkcija očekuje sirove akreditive; prosljeđivanje već kodiranog teksta može ponovo kodirati znak procenta.
Vraćena mapa bira ovaj proxy za HTTP i HTTPS odredišta. Ključ poput http://192.0.2.10 ima drugo značenje u Requests-u: bira rutu za taj odredišni host. To nije indeks za skup proxy servera.
Parser namjerno prihvata navedeni IPv4 format. Ne pokriva korisnička imena s dvotočkama ni IPv6 adrese bez zagrada; za njih je potreban nedvosmislen format unosa. Držite generisane URL-ove s akreditivima izvan uobičajenih dnevnika.