客戶(hù)端然后就會(huì)用包含在頭中的正確的帳戶(hù)和密碼重新請(qǐng)求這個(gè)域。這是“基本驗(yàn)證”。為了簡(jiǎn)化這個(gè)過(guò)程,我們可以創(chuàng)建一個(gè)
HTTPBasicAuthHandler和opener的實(shí)例來(lái)使用這個(gè)handler。
HTTPBasicAuthHandler用一個(gè)叫做密碼管理的對(duì)象來(lái)處理url和用戶(hù)名和密碼的域的映射。如果你知道域是什么(從服務(wù)器發(fā)送的authentication 頭中),那你就可以使用一個(gè)HTTPPasswordMgr。多
數(shù)情況下人們不在乎域是什么。那樣使用HTTPPasswordMgrWithDefaultRealm就很方便。它允許你為一個(gè)url具體指定用戶(hù)名和密碼。這將會(huì)在你沒(méi)有為一個(gè)特殊的域提供一個(gè)可供選擇的密碼鎖時(shí)提供給你。
我們通過(guò)提供None作為add_password方法域的參數(shù)指出 這一點(diǎn)。
最高級(jí)別的url是需要authentication的第一個(gè)url。比你傳遞給.add_password()的url更深的url同樣也會(huì)匹配。
# 創(chuàng)建密碼管理器 password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() # 添加用戶(hù)名和密碼. # 如果知道realm,用它代替None. top_level_url = "http://www.163.com/" password_mgr.add_password(None, top_level_url, username, password) handler = urllib2.HTTPBasicAuthHandler(password_mgr) #創(chuàng)建opener opener = urllib2.build_opener(handler) # 打開(kāi)一個(gè)url opener.open(a_url) # 安裝opener,以后urllib2.urlopen都會(huì)用它。 urllib2.install_opener(opener)
有時(shí)候我們需要python解析一些頁(yè)面,實(shí)現(xiàn)自動(dòng)化監(jiān)控的功能。而這些頁(yè)面一般需要用戶(hù)輸入username,password進(jìn)行基本的驗(yàn)證,這時(shí)就需要我們使用python基本的認(rèn)證功能。現(xiàn)已python抓取dubbo-admin的服務(wù)頁(yè)面進(jìn)行舉例:
# create a password manager
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
# Add the username and password.
top_level_url = "http://1000.906.400.1620:88889/dubbo-admin/governance/services"
username = "root"
password = "testroot"
password_mgr.add_password(None, top_level_url, username, password)
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(handler)
# use the opener to fetch a url
opener.open(top_level_url)
# Install the opener
urllib2.install_opener(opener)
# Now all calls to use urllib2.urlopen use our opener.
print urllib2.urlopen(top_level_url).read()
明:這種認(rèn)證解決了訪問(wèn)一個(gè)網(wǎng)頁(yè)需要輸入用戶(hù)名、密碼的認(rèn)證,卻沒(méi)有專(zhuān)門(mén)的login請(qǐng)求的頁(yè)面的認(rèn)證方式。(不像qzone, 人人等都有一個(gè)類(lèi)似login.do的post請(qǐng)求)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
分享名稱(chēng):HTTPBasicAuthHandler(基本驗(yàn)證)-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://chinadenli.net/article2/ehgoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)頁(yè)設(shè)計(jì)公司、外貿(mào)建站、做網(wǎng)站、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容