IPv4 ip:port:user:password bejegyzések átalakítása a Requests számára
Bontsa fel az ip:port:user:password értéket korlátozott felosztással, és kódolja a hitelesítő adatok részeit a proxy térkép felépítése előtt.
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.