您好,登錄后才能下訂單哦!
客戶端然后就會用包含在頭中的正確的帳戶和密碼重新請求這個域。這是“基本驗證”。為了簡化這個過程,我們可以創建一個
HTTPBasicAuthHandler和opener的實例來使用這個handler。
HTTPBasicAuthHandler用一個叫做密碼管理的對象來處理url和用戶名和密碼的域的映射。如果你知道域是什么(從服務器發送的authentication 頭中),那你就可以使用一個HTTPPasswordMgr。多
數情況下人們不在乎域是什么。那樣使用HTTPPasswordMgrWithDefaultRealm就很方便。它允許你為一個url具體指定用戶名和密碼。這將會在你沒有為一個特殊的域提供一個可供選擇的密碼鎖時提供給你。
我們通過提供None作為add_password方法域的參數指出 這一點。
最高級別的url是需要authentication的第一個url。比你傳遞給.add_password()的url更深的url同樣也會匹配。
# 創建密碼管理器 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) #創建opener opener = urllib2.build_opener(handler) # 打開一個url opener.open(a_url) # 安裝opener,以后urllib2.urlopen都會用它。 urllib2.install_opener(opener)
有時候我們需要python解析一些頁面,實現自動化監控的功能。而這些頁面一般需要用戶輸入username,password進行基本的驗證,這時就需要我們使用python基本的認證功能。現已python抓取dubbo-admin的服務頁面進行舉例:
# 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()
明:這種認證解決了訪問一個網頁需要輸入用戶名、密碼的認證,卻沒有專門的login請求的頁面的認證方式。(不像qzone, 人人等都有一個類似login.do的post請求)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。