Egy HTTP proxy-szolgáltató IPv4-formátumához ip:port:user:password alakítsa át a mezőket, mielőtt az értéket a Requests kapja:

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}

A korlátozott felosztás megőrzi a jelszóban lévő további kettőspontokat. Csak a sorvégek eltávolítása azt is megakadályozza, hogy csendben eltávolítsuk azokat a szóközöket, amelyek egy hitelesítő adathoz tartozhatnak.

Kódolja a felhasználónevet és a jelszót külön URL-összetevőként. A nyers jelszóban lévő @ jelet nem szabad összetéveszteni a proxy-gazdagép előtti elválasztóval. Ez a függvény nyers hitelesítő adatokat vár; ha már kódolt szöveget ad át, a százalékjel újra kódolódhat.

A visszaadott térkép ezt a proxyt választja HTTP- és HTTPS-célokhoz. Egy http://192.0.2.10 kulcs más jelentéssel bír a Requestsben: útvonalat választ ahhoz a célgazdagéphez. Ez nem egy proxyszerver-készlet indexe.

A feldolgozó szándékosan csak a megadott IPv4-formátumot fogadja el. Nem fedi le a kettőspontot tartalmazó felhasználóneveket és a zárójel nélküli IPv6-címeket; ezekhez egyértelmű beviteli formátum kell. Tartsa a létrehozott hitelesítő adatokat tartalmazó URL-címeket a szokásos naplókon kívül.

Kapcsolódó cikkek