Python urllib: tabbatar da Basic na wakili don buƙatun HTTP
Gina opener na urllib bayyananne don ƙalubalen Basic daga wakilin HTTP, kuma bambanta wannan musayar HTTP ta yau da kullum da tabbatarwar HTTPS CONNECT.
Don ƙalubalen Basic daga wakilin HTTP yi amfani da ProxyBasicAuthHandler. Wannan misalin HTTP na yau da kullum yana riƙe hanyar da asusun a cikin opener ɗaya:
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)Yi amfani da ainihin ƙarshen wuri da asusun da mai gudanarwa ya bayar. Mai sarrafawa yana amfani da manajan kalmar sirri don ƙalubalen wakilin; daidaita URI da realm na wakilin da aka nufa. Tabbatarwar Basic a wurin da aka nufa tana amfani da wani mai sarrafawa.
Kiran opener kai tsaye yana riƙe wannan saitin a gida. URL ɗin buƙatar ya kasance gidan yanar gizo, ba mai shiga tsakani ba. Wannan hanyar HTTP bayyananna ba ta ɓoye musayar Basic.
Kada ka ɗauka cewa akwai goyon bayan ramin HTTPS daga wannan misalin. 407 yayin CONNECT yana faruwa a lokacin saitin, kafin amsar da aka saba daga wurin da aka nufa; haɗin da aka zaɓa dole ya sarrafa tabbatarwa a can. Canza mai sarrafa shiga na gidan yanar gizo ba zai iya gyara wancan ƙalubalen da ya gabata ba.
URL na wakili masu ɗauke da takaddun shaida wani tsari ne da ake samu a tsoffin misalan. Idan an yi amfani da su, yi encoding na raba URL daidai kuma ka riƙe URL ɗin da ya ƙunshi sirri daga bayanan log.