Jei HTTP proxy teikėjas naudoja IPv4 formatą ip:port:user:password, prieš perduodami reikšmę Requests konvertuokite laukus:

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}

Ribotas skaidymas išsaugo papildomus dvitaškius slaptažodyje. Pašalinus tik eilutės pabaigos simbolius, taip pat išvengiama tylaus tarpų, kurie gali priklausyti prisijungimo duomenims, pašalinimo.

Užkoduokite vartotojo vardą ir slaptažodį kaip atskirus URL komponentus. Simbolis @ neapdorotame slaptažodyje neturi būti supainiotas su skyrikliu prieš proxy hostą. Ši funkcija tikisi neapdorotų prisijungimo duomenų; jau užkoduoto teksto perdavimas gali dar kartą užkoduoti procento ženklą.

Grąžinamas žemėlapis pasirenka šį proxy HTTP ir HTTPS paskirties vietoms. Raktas, pavyzdžiui, http://192.0.2.10, Requests turi kitą reikšmę: jis pasirenka maršrutą tai paskirties hosto reikšmei. Tai nėra proxy serverių grupės indeksas.

Analizatorius sąmoningai priima nurodytą IPv4 formatą. Jis neapima vartotojo vardų su dvitaškiais ar IPv6 adresų be laužtinių skliaustų; jiems reikia vienareikšmio įvesties formato. Saugokite sugeneruotus URL su prisijungimo duomenimis nuo įprastų žurnalų.

Susiję straipsniai