Претварање IPv4 уноса ip:port:user:password за Requests
Раздвојте ip:port:user:password ограниченим раздвајањем и кодирајте делове акредитива пре изградње прокси мапе.
За 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-ове са акредитивима изван уобичајених дневника.