Python urllib: põhiline puhverserveri autentimine HTTP-päringute jaoks
Koostage selgesõnaline urllib-openija HTTP-puhverserveri Basic-väljakutse jaoks ning eristage seda tavalist HTTP-vahetust HTTPS CONNECT-autentimisest.
HTTP-puhverserveri Basic-väljakutse jaoks kasutage ProxyBasicAuthHandler. See tavaline HTTP-näide hoiab marsruudi ja konto ühes openijas:
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)Kasutage tegelikku lõpp-punkti ja operaatori antud kontot. Käitleja kasutab puhverserveri väljakutse jaoks paroolihaldurit; sobitage kavandatud puhverserveri URI ja realm. Sihtkoha Basic-autentimine kasutab teist käitlejat.
Openija otsekutsumine hoiab selle seadistuse kohalikuna. Päringu URL jääb veebisaidiks, mitte vahendajaks. See krüptimata HTTP-marsruut ei krüpteeri Basic-vahetust.
Ärge järeldage sellest näitest HTTPS-tunneli tuge. 407 CONNECTi ajal tekib seadistamisel, enne tavalist sihtkoha vastust; valitud integratsioon peab autentimise seal käsitlema. Veebisaidi sisselogimiskäitleja muutmine ei paranda seda varasemat väljakutset.
Volitustega puhverserveri URL-id on teine vorming, mida leidub vanemates näidetes. Kui neid kasutate, kodeerige URL-i eraldajad õigesti ja hoidke tekkinud saladust kandev URL logidest eemal.