客戶端然后就會(huì)用包含在頭中的正確的帳戶和密碼重新請(qǐng)求這個(gè)域。這是“基本驗(yàn)證”。為了簡化這個(gè)過程,我們可以創(chuàng)建一個(gè)
HTTPBasicAuthHandler和opener的實(shí)例來使用這個(gè)handler。
HTTPBasicAuthHandler用一個(gè)叫做密碼管理的對(duì)象來處理url和用戶名和密碼的域的映射。如果你知道域是什么(從服務(wù)器發(fā)送的authentication 頭中),那你就可以使用一個(gè)HTTPPasswordMgr。多
數(shù)情況下人們不在乎域是什么。那樣使用HTTPPasswordMgrWithDefaultRealm就很方便。它允許你為一個(gè)url具體指定用戶名和密碼。這將會(huì)在你沒有為一個(gè)特殊的域提供一個(gè)可供選擇的密碼鎖時(shí)提供給你。
我們通過提供None作為add_password方法域的參數(shù)指出 這一點(diǎn)。
最高級(jí)別的url是需要authentication的第一個(gè)url。比你傳遞給.add_password()的url更深的url同樣也會(huì)匹配。
# 創(chuàng)建密碼管理器 password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() # 添加用戶名和密碼. # 如果知道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) # 打開一個(gè)url opener.open(a_url) # 安裝opener,以后urllib2.urlopen都會(huì)用它。 urllib2.install_opener(opener)
有時(shí)候我們需要python解析一些頁面,實(shí)現(xiàn)自動(dòng)化監(jiān)控的功能。而這些頁面一般需要用戶輸入username,password進(jìn)行基本的驗(yàn)證,這時(shí)就需要我們使用python基本的認(rèn)證功能。現(xiàn)已python抓取dubbo-admin的服務(wù)頁面進(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)證解決了訪問一個(gè)網(wǎng)頁需要輸入用戶名、密碼的認(rèn)證,卻沒有專門的login請(qǐng)求的頁面的認(rèn)證方式。(不像qzone, 人人等都有一個(gè)類似login.do的post請(qǐng)求)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。