Փոխակերպել IPv4 ip:port:user:password գրառումները Requests-ի համար
Վերլուծեք ip:port:user:password-ը սահմանափակ բաժանումով և կոդավորեք հավատարմագրերի բաղադրիչները նախքան proxy քարտեզը կառուցելը։
HTTP proxy մատակարարի IPv4 ձևաչափի 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 բաղադրիչներ։ Հում գաղտնաբառի @ նշանը չպետք է շփոթվի proxy հոսթից առաջ եղած բաժանիչի հետ։ Այս ֆունկցիան սպասում է հում հավատարմագրեր. արդեն կոդավորված տեքստ փոխանցելը կարող է նորից կոդավորել տոկոսի նշանը։
Վերադարձված քարտեզը ընտրում է այս proxy-ն HTTP և HTTPS նպատակակետերի համար։ http://192.0.2.10-ի նման բանալին Requests-ում այլ իմաստ ունի. այն ընտրում է երթուղի այդ նպատակակետ հոսթի համար։ Սա proxy սերվերների լողավազանի ինդեքս չէ։
Վերլուծիչը դիտավորյալ ընդունում է միայն նշված IPv4 ձևաչափը։ Այն չի ընդգրկում երկու կետ պարունակող օգտանուններ կամ առանց փակագծերի IPv6 հասցեներ. դրանց անհրաժեշտ է միանշանակ մուտքային ձևաչափ։ Ստեղծված հավատարմագրերով URL-ները հեռու պահեք սովորական մատյաններից։