За IPv4 формат ip:port:user:password HTTP прокси провајдера, претворите поља пре него што вредност предате 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}

Ограничено раздвајање чува све додатне двотачке унутар лозинке. Уклањање само завршетака редова такође спречава тихо уклањање размака који могу припадати акредитиву.

Кодирајте корисничко име и лозинку као засебне URL компоненте. Знак @ у сировој лозинци не сме се заменити са раздвајачем пре прокси хоста. Ова функција очекује сирове акредитиве; прослеђивање већ кодираног текста може поново кодирати знак процента.

Враћена мапа бира овај прокси за HTTP и HTTPS одредишта. Кључ попут http://192.0.2.10 има друго значење у Requests-у: бира руту за тај одредишни хост. То није индекс за скуп прокси сервера.

Парсер намерно прихвата наведени IPv4 формат. Не покрива корисничка имена са двотачкама ни IPv6 адресе без заграда; за њих је потребан недвосмислен формат уноса. Држите генерисане URL-ове са акредитивима изван уобичајених дневника.

Повезани чланци