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-ები ჩვეულებრივი ჟურნალებიდან მოშორებით შეინახეთ.