驗證碼作用
不少網站在用戶登錄、用戶提交信息等登錄和輸入的頁面上使用了驗證碼技術。驗證碼技術可以有效防止惡意用戶對網站的濫用,使得網站可以有效避免用戶信息失竊、保證網站穩定安全性。
但是驗證碼給自動化測試帶來一些不便,使腳本無法正常運行覆蓋功能模塊。
如何解決
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!