小編寫這篇文章的主要目的,是給大家做一個介紹,介紹關(guān)于在python selenium中,如果出現(xiàn)了BasicAuth認(rèn)證彈框,那么,我們后續(xù)應(yīng)該要怎么進場處理呢?下面就給大家詳細(xì)解答下。
一、什么是BasicAuth
兩個不認(rèn)識的見面:
假如說張三和李四見面了,于是張三向李四發(fā)出了誠摯的邀請:李四,國慶來上海玩吧,我請你吃小龍蝦!本來李四想先視頻一下到時候好認(rèn)人,但張三說那樣就沒有驚喜感了。于是兩人就采取了最原始的認(rèn)證方式:對暗號。
沒錯,這種方式就是HTTP基本認(rèn)證。
映射到互聯(lián)網(wǎng)為:
1、客戶端:服務(wù)器,請把logo.jpg圖片返回給我
GET/logo.jpg HTTP/1.1
2、服務(wù)器:客戶端你好,這個資源在安全區(qū)Authorization里,是受限資源,需要基本認(rèn)證,請帶上你的用戶名和密碼再來
HTTP/1.1 401 Authorization Required
www-Authenticate:Basic realm="Authorization"
服務(wù)器會返回401,告知客戶端這個資源需要使用基本認(rèn)證的方式訪問。
我們可以看到在
www-Authenticate
這個Header里面有兩個值,
Basic:說明需要基本認(rèn)證,
realm:說明客戶端需要輸入這個安全區(qū)的用戶名和密碼,而不是其他區(qū)的。
3、客戶端:服務(wù)器,我已經(jīng)按照你的要求,攜帶了相應(yīng)的用戶名和密碼信息了,你看一下。如果客戶端是瀏覽器,那么此時就會彈出一個彈窗,讓用戶輸入用戶名和密碼。
Basic內(nèi)容為:用戶名:密碼的base64形式。
例如我的用戶名為Shusheng007,密碼為ss007。那么我的Basic的內(nèi)容為Shusheng007:ss007對應(yīng)的base64編碼內(nèi)容U2h1c2hlbmcwMDcldUZGMUFzczAwNw==,如下所示
GET/logo.jpg HTTP/1.1
Authorization:Basic U2h1c2hlbmcwMDcldUZGMUFzczAwNw==
4、服務(wù)器:客戶端你好,我已經(jīng)校驗了你的用戶名和密碼,是正確的,這是你要的資源。
HTTP/1.1 200 OK Content-type:image/jpg...
至此這個HTTP事務(wù)就結(jié)束了,非常簡單的一個認(rèn)證機制。
二、selenium處理思路
因為非常像彈出框,首先我們想到的思路是alert處理模塊。
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()
但是代碼會報錯,提示找不到alert警告框
接下來考慮是不是UI自動化的詬病,要加延遲,安排!
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)前這個彈框出現(xiàn)后是不能夠元素定位的,確定不是HTML,是瀏覽器的彈框。
接下來就想入非非了,Keys?pyautogui?最后想到HTTP協(xié)議是可以攜帶賬號和密碼的,但是通常不會這么做。
格式為:http://username:password host:port/path/query parameter
代碼試驗如下:
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://username:password ip:port/admin.php")
input("...")
driver.quit()
的確跳過授權(quán)框,進入到網(wǎng)頁登錄頁面。
到此為止,這篇文章,小編就為大家介紹到這里了了,希望可以給各位讀者帶來幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/127991.html
摘要:要使用驗證,需要通過一些外部技術(shù)例如,向客戶發(fā)送包含用戶和秘密密鑰的電子郵件向客戶端提供用戶和密鑰??蛻舳藢⑹褂锰峁┑拿荑€來簽署所有請求。 驗證類型 全局驗證 要實現(xiàn)安全認(rèn)證,只需要在Eve實例化的時候傳入驗證類即可,這樣就創(chuàng)建了一個全局的驗證類 from eve.auth import BasicAuth class MybasicAuth(BasicAuth): ...
摘要:即便是使用為主作為服務(wù)端開發(fā)在項目中也會經(jīng)常用到要去其他的系統(tǒng)調(diào)用服務(wù)的場景。對于服務(wù)端調(diào)用的場景加上這個基本認(rèn)證也會比在前端直接使用這種比較空的更加合適。本文將介紹使用在服務(wù)端調(diào)用時面對最基本的認(rèn)證認(rèn)證的處理方式。 前言 Node作為前后端分離的利器由于它使用JS語法的特殊性,可以使得前端更好的利用Node來作為中間層十分方便得調(diào)用后臺提供的黑盒API。即便是使用Node為主作為服務(wù)...
摘要:自己犯下的低級錯誤后面不可加括號,因為是屬性,不是方法方法才用調(diào)用。 1、測試的時候一般調(diào)用的瀏覽器窗口都不是全屏的,為了不影響體驗我們需要將窗口最大化 解決的方案: showImg(https://segmentfault.com/img/bV7p2M?w=448&h=270); 按照自己的意愿設(shè)置窗口大小(注意:其中數(shù)字大小為像素點) showImg(https://segment...
摘要:原文地址在中實際上是提供了基礎(chǔ)認(rèn)證的我們可以通過如下的方式進行導(dǎo)入而在中將安全系統(tǒng)拆分為認(rèn)證和權(quán)限。這里我們來看下最簡單的基礎(chǔ)認(rèn)證。如果是自定義認(rèn)證類我們是可以在失敗的時候返回的對于系統(tǒng)內(nèi)建的基礎(chǔ)認(rèn)證類我們在回調(diào)時只能返回。 原文地址: http://52sox.com/pyramid-basi... 在Pyramid中實際上是提供了基礎(chǔ)認(rèn)證的,我們可以通過如下的方式進行導(dǎo)入: fro...
閱讀 928·2023-01-14 11:38
閱讀 902·2023-01-14 11:04
閱讀 759·2023-01-14 10:48
閱讀 2065·2023-01-14 10:34
閱讀 968·2023-01-14 10:24
閱讀 844·2023-01-14 10:18
閱讀 512·2023-01-14 10:09
閱讀 591·2023-01-14 10:02