Python urllib: grunnstaðfesting milliþjóns fyrir HTTP-beiðnir
Byggðu skýran urllib-opnara fyrir Basic-áskorun frá HTTP-milliþjóni og greindu þessi venjulegu HTTP-skipti frá HTTPS CONNECT-staðfestingu.
Fyrir Basic-áskorun frá HTTP-milliþjóni skaltu nota ProxyBasicAuthHandler. Þetta venjulega HTTP-dæmi heldur leiðinni og reikningnum í einum opnara:
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)Notaðu raunverulega endapunktinn og reikninginn sem rekstraraðilinn útvegar. Meðhöndlarinn notar lykilorðastjórann fyrir áskorun milliþjónsins; stemmdu við fyrirhugaða milliþjóns-URI og realm. Basic-staðfesting á áfangastað notar annan meðhöndlara.
Að kalla á opnarann beint heldur þessari uppsetningu staðbundinni. URL beiðninar er áfram vefsvæðið, ekki milliliðurinn. Þessi ódulkóðaða HTTP-leið dulkóðar ekki Basic-skipti.
Ekki álykta um HTTPS-göngstuðning út frá þessu dæmi. 407 við CONNECT á sér stað við uppsetningu, fyrir venjulegt svar áfangastaðar; valda samþættingin verður að meðhöndla staðfestingu þar. Að skipta um innskráningarmeðhöndlara vefsins getur ekki lagfært þá fyrri áskorun.
Milliþjóns-URL með auðkennum eru annað snið sem finnst í eldri dæmum. Ef þau eru notuð skaltu kóða URL-aðgreini rétt og halda leyndarmálinu sem URL-inið ber utan logga.