Selenium基於Cookie繞過驗證碼百度自動登錄


驗證碼作用

不少網站在用戶登錄、用戶提交信息等登錄和輸入的頁面上使用了驗證碼技術。驗證碼技術可以有效防止惡意用戶對網站的濫用,使得網站可以有效避免用戶信息失竊、保證網站穩定安全性。

但是驗證碼給自動化測試帶來一些不便,使腳本無法正常運行覆蓋功能模塊。

如何解決

1.去掉驗證碼

這是最簡單的方法,對於開發人員來說,只是把驗證碼的相關代碼注釋掉即可,如果是在測試環境,這樣做可省去了測試人員不少麻煩,如果自動化腳本是要在正式環境跑,這樣就給系統帶來了一定的風險。

2.設置萬能碼

去掉驗證碼的主要是安全問題,為了應對在線系統的安全性威脅,可以在修改程序時不取消驗證碼,而是程序中留一個“后門”---設置一個“萬能驗證碼”,只要用戶輸入這個“萬能驗證碼”,程序就認為驗證通過,否則按照原先的驗證方式進行驗證。

3.驗證碼識別技術(OCR)

例如可以通過Python-tesseract 來識別圖片驗證碼,Python-tesseract是光學字符識別Tesseract OCR引擎的Python封裝類。能夠讀取任何常規的圖片文件(JPG, GIF ,PNG , TIFF等)。不過,目前市面上的驗證碼形式繁多,目前任何一種驗證碼識別技術,識別率都不是100% 。

4.記錄cookie

通過向瀏覽器中添加cookie 可以繞過登錄的驗證碼。

 

基於Cookie繞過驗證碼自動登錄

案例:使用Cookie繞過百度驗證碼自動登錄賬戶。

具體代碼如下:

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/7 15:35
# @Author : Gengwu
# @FileName: Cookie_login.py
# @Software: PyCharm

from selenium import  webdriver
from time import sleep

driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()


#手動添加cookile
driver.add_cookie({'name':'BAIDUID','value':'AD050209968BF5FE338F0F961B14FDC7:FG=1'}) #利用抓包可以看到cookile,手動添加
driver.add_cookie({'name':'BDUSS','value':'DVMZmdiUGlvNERXcDEtQjYyWGRvaXRINjVXOGxVZHhrRDJGRnN4QW81UUxqMVJmSVFBQUFBJCQAAAAAAAAAAAEAAADOqfNLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsCLV8LAi1fe'})

sleep(4)
driver.refresh() #刷新頁面查看登錄效果
sleep(4)

driver.quit()

代碼里面具體的fidder抓包可以參考以上的博文,鏈接如下:

https://www.cnblogs.com/gengwulovestudy/p/13299276.html

以上如果有問題歡迎隨時溝通和討論!

Best Regards!
Make a little progress every day!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM