Za IPv4 format HTTP proxy pružatelja ip:port:user:password, 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 dijeljenje čuva sve dodatne dvotočke unutar lozinke. Uklanjanje samo završetaka redaka također sprječava tiho uklanjanje razmaka koji bi mogli pripadati vjerodajnici.

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 vjerodajnice; ako predate već kodirani tekst, znak postotka može se ponovno kodirati.

Vraćena mapa odabire ovaj proxy za HTTP i HTTPS odredišta. Ključ poput http://192.0.2.10 ima drugo značenje u Requests-u: odabire rutu za taj odredišni host. To nije indeks u skupu proxy poslužitelja.

Parser namjerno prihvaća samo navedeni IPv4 format. Ne pokriva korisnička imena s dvotočkama ni IPv6 adrese bez zagrada; one traže nedvosmislen format unosa. Držite generirane URL-ove s vjerodajnicama izvan uobičajenih zapisa.

Povezani članci