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