Python urllib: alapszintű proxy-hitelesítés HTTP-kérésekhez
Készítsen explicit urllib openert egy HTTP-proxy Basic kihívásához, és különböztesse meg ezt a szokásos HTTP-cserét a HTTPS CONNECT hitelesítéstől.
Egy HTTP-proxy Basic kihívásához használja ezt: ProxyBasicAuthHandler. Ez a szokásos HTTP-példa az útvonalat és a fiókot egyetlen openerben tartja:
import os
from urllib.request import (
ProxyHandler, ProxyBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener,
)
proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
None, proxy_url,
os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
ProxyHandler({'http': proxy_url}),
ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
print(response.status)Használja a valódi végpontot és az üzemeltető által biztosított fiókot. A kezelő a jelszókezelőt használja a proxy kihívásához; egyeztesse a szándékolt proxy URI-t és realm-et. A cél Basic hitelesítése másik kezelőt használ.
Az opener közvetlen hívása helyben tartja ezt a beállítást. A kérés URL-je továbbra is a webhely, nem a közvetítő. Ez a titkosítatlan HTTP-útvonal nem titkosítja a Basic cserét.
Ne következtessen ebből a példából HTTPS-alagút támogatására. A 407 CONNECT közben a beállításnál, a cél szokásos válasza előtt történik; a választott integrációnak ott kell kezelnie a hitelesítést. A webhely bejelentkezési kezelőjének cseréje nem javítja a korábbi kihívást.
A hitelesítő adatokat tartalmazó proxy URL-ek másik formátum, amely régebbi példákban fordul elő. Ha használja őket, kódolja helyesen az URL-elválasztókat, és tartsa a keletkező titkos URL-t a naplókon kívül.