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