selenium中BasicAuth認(rèn)證彈框處理
一、什么是BasicAuth
網(wǎng)友見面:
例如王二狗和牛翠花兩個(gè)人在網(wǎng)上都互動(dòng)半年了還沒有見面,于是二狗向翠花發(fā)出了誠(chéng)摯的邀請(qǐng):翠花,五一來天津玩吧,我請(qǐng)你吃麻辣燙!本來二狗想先視頻一下到時(shí)候好認(rèn)人,但翠花說那樣就沒有驚喜感了。于是兩人就采取了最原始的認(rèn)證方式:對(duì)暗號(hào),到時(shí)候翠花喊:天王蓋地虎。二狗就喊:翠花好漂亮。
沒錯(cuò),這種方式就是HTTP基本認(rèn)證。
映射到互聯(lián)網(wǎng)為:
1、客戶端:服務(wù)器,請(qǐng)把logo.jpg圖片返回給我
GET /logo.jpg HTTP/1.1
2、服務(wù)器:客戶端你好,這個(gè)資源在安全區(qū)Authorization里,是受限資源,需要基本認(rèn)證,請(qǐng)帶上你的用戶名和密碼再來
HTTP/1.1 401 Authorization Required www-Authenticate: Basic realm= "Authorization"

服務(wù)器會(huì)返回401,告知客戶端這個(gè)資源需要使用基本認(rèn)證的方式訪問。
我們可以看到在
www-Authenticate
這個(gè)Header里面 有兩個(gè)值,
Basic:說明需要基本認(rèn)證,
realm:說明客戶端需要輸入這個(gè)安全區(qū)的用戶名和密碼,而不是其他區(qū)的。
3、客戶端:服務(wù)器,我已經(jīng)按照你的要求,攜帶了相應(yīng)的用戶名和密碼信息了,你看一下。 如果客戶端是瀏覽器,那么此時(shí)就會(huì)彈出一個(gè)彈窗,讓用戶輸入用戶名和密碼。

Basic 內(nèi)容為: 用戶名:密碼 的base64形式 。
例如我的用戶名為Shusheng007,密碼為ss007。那么我的Basic的內(nèi)容為 Shusheng007:ss007 對(duì)應(yīng)的base64 編碼內(nèi)容U2h1c2hlbmcwMDcldUZGMUFzczAwNw==,如下所示
GET /logo.jpg HTTP/1.1 Authorization: Basic U2h1c2hlbmcwMDcldUZGMUFzczAwNw==

4、服務(wù)器:客戶端你好,我已經(jīng)校驗(yàn)了你的用戶名和密碼,是正確的,這是你要的資源。
HTTP/1.1 200 OK Content-type: image/jpg ...
至此這個(gè)HTTP事務(wù)就結(jié)束了,非常簡(jiǎn)單的一個(gè)認(rèn)證機(jī)制。
二、selenium處理思路
因?yàn)榉浅O駨棾隹颍紫任覀兿氲降乃悸肥莂lert處理模塊。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://ip:port/admin.php/index/index")
driver.switch_to.alert.send_keys("hello")
input("...")
driver.quit()
但是代碼會(huì)報(bào)錯(cuò),提示找不到alert警告框

接下來考慮是不是UI自動(dòng)化的詬病,要加延遲,安排!
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://ip:port/admin.php/index/index")
time.sleep(5)
driver.switch_to.alert.send_keys("hello")
input("...")
driver.quit()
問題依舊~
接下來思考,當(dāng)前這個(gè)彈框出現(xiàn)后是不能夠元素定位的,確定不是HTML,是瀏覽器的彈框。
接下來就想入非非了,Keys?pyautogui?最后想到HTTP協(xié)議是可以攜帶賬號(hào)和密碼的,但是通常不會(huì)這么做。
格式為:http://username:password@host:port/path/query parameter
代碼試驗(yàn)如下:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://username:password@ip:port/admin.php")
input("...")
driver.quit()
的確跳過授權(quán)框,進(jìn)入到網(wǎng)頁登錄頁面。

到此這篇關(guān)于selenium中BasicAuth認(rèn)證彈框處理的文章就介紹到這了,更多相關(guān)selenium BasicAuth認(rèn)證彈框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python用post訪問restful服務(wù)接口的方法
今天小編就為大家分享一篇python用post訪問restful服務(wù)接口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python實(shí)現(xiàn)圖片二值化及灰度處理方式
今天小編就為大家分享一篇python實(shí)現(xiàn)圖片二值化及灰度處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python中常用排序操作sort方法和sorted函數(shù)的使用超詳細(xì)講解(內(nèi)置模板代碼!)
這篇文章主要介紹了Python中的排序方法,包括sort()方法和sorted()函數(shù)的使用,sort()方法用于列表,對(duì)原列表進(jìn)行排序,文章還提供了一些排序案例模板代碼,以解決實(shí)際問題,需要的朋友可以參考下2025-02-02
python+selenium實(shí)現(xiàn)QQ郵箱自動(dòng)發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了python+selenium實(shí)現(xiàn)QQ郵箱自動(dòng)發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
python 如何獲取頁面所有a標(biāo)簽下href的值
這篇文章主要介紹了python 獲取頁面所有a標(biāo)簽下href的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-05-05

