Por la IPv4-formato de HTTP-proksa provizanto ip:port:user:password, konvertu la kampojn antaŭ ol doni la valoron al 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}

La limigita divido konservas ĉiujn pliajn dupunktojn ene de la pasvorto. Forigi nur linifinojn ankaŭ malhelpas silente forigi spacojn, kiuj povus aparteni al akreditilo.

Kodigu la uzantnomon kaj pasvorton kiel apartajn URL-komponentojn. @ en kruda pasvorto ne rajtas esti konfuzita kun la apartigilo antaŭ la proksila gastiganto. Ĉi tiu funkcio atendas krudajn akreditilojn; se vi transdonos jam koditan tekston, la procenta signo povas esti kodita denove.

La redonita mapo elektas ĉi tiun proksilon por HTTP kaj HTTPS celoj. Ŝlosilo kiel http://192.0.2.10 havas alian signifon en Requests: ĝi elektas itineron por tiu cella gastiganto. Ĝi ne estas indekso en naĝejo de proksilaj serviloj.

La analizilo intence akceptas nur la indikitan IPv4-formaton. Ĝi ne kovras uzantnomojn kun dupunktoj nek IPv6-adresojn sen krampoj; tiuj bezonas sendubean enigan formaton. Tenu generitajn URL-ojn kun akreditiloj ekster rutinaj protokoloj.

Rilataj artikoloj