Requests-д зориулж IPv4 ip:port:user:password бичлэгүүдийг хөрвүүлэх
ip:port:user:password-ийг хязгаарлагдмал хуваалтаар задалж, прокси мап бүрдүүлэхийн өмнө нэвтрэх мэдээллийн хэсгүүдийг кодло.
HTTP прокси нийлүүлэгчийн 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 бүрэлдэхүүн хэсэг болгон кодло. Түүхий нууц үг дэх @ тэмдэг нь прокси хостын өмнөх тусгаарлагчтай андуурагдах ёсгүй. Энэ функц түүхий нэвтрэх мэдээллийг хүлээж авдаг; аль хэдийн кодлогдсон текст дамжуулбал хувийн тэмдэг дахин кодлогдож болно.
Буцаагдсан мап нь HTTP болон HTTPS очих газруудад энэ проксийг сонгоно. http://192.0.2.10 гэх мэт түлхүүр нь Requests-д өөр утгатай: энэ нь тухайн очих хостын чиглэлийг сонгодог. Энэ нь прокси серверүүдийн бүлгийн индекс биш.
Парсер нь заасан IPv4 форматыг санаатайгаар хүлээн авдаг. Энэ нь цэг таслал агуулсан хэрэглэгчийн нэр эсвэл хаалтгүй IPv6 хаягийг хамардаггүй; тэдгээрт хоёрдмол утгагүй оролтын формат хэрэгтэй. Үүсгэсэн нэвтрэх мэдээлэл бүхий URL-уудыг өдөр тутмын логоос хол байлга.