陳新龍
我們在注冊賬號或登錄的時候通常會出現輸入驗證碼的環(huán)節(jié)。為什么一定要有這么麻煩的環(huán)節(jié)呢,要驗證什么呢?
其實驗證碼是為了區(qū)分用戶是計算機還是人,開發(fā)者一般將這種強制人機交互的程序放置在注冊或者是輸入重要信息的環(huán)節(jié)。驗證碼主要功能是抵御自動化攻擊,如惡意破解密碼、刷票、論壇灌水,有效防止黑客對某一個特定注冊用戶使用暴力破解方式進行不斷的登錄嘗試。
常見的驗證碼的類型有:隨機字母或數字驗證碼,中文及圖片組合驗證碼,可以隨機變換的gif驗證碼,常識問題、認知問題驗證碼,手機短信驗證碼,通過滑動驗證和檢查驗證的動作驗證碼等。
當我們需要自動化登錄某個網站的時候,就不可避免遇到輸入驗證碼這一環(huán)節(jié),今天就和大家分享通過Python編程并配合影刀的輔助去自動完成解析驗證碼的功能。
首先介紹一個通用驗證碼識別OCR庫ddddocr。ddddocr是個免費開源專為驗證碼廠商對自家新版本驗證碼難易強度進行驗證的Python庫。
有了ddddocr,我們可以處理絕大部分的驗證碼(github地址https://github.com/sml2h3/ddddocr)。ddddocr通過大批量生成隨機數據后進行深度網絡訓練,ddddocr奉行著開箱即用、最簡依賴的理念,其本身并非針對任何一家驗證碼廠商的產品,盡量減少用戶的配置和使用成本。但是如果你熟悉深度網絡訓練,就能理解在解析驗證碼的過程中難免會碰到解析不成功或者解析失誤的場景,只能多包容。畢竟你也沒法提高人工智能。
解析驗證碼的代碼也不難,相信大家都是可以理解的。
首先我們需要安裝ddddocr庫,在cmd環(huán)境中輸入pipinstallddddocr安裝完成,其他編輯器可以在插件中搜索安裝。
安裝完成后我們即可在Python中將ddddocr導入進來,導入成功后我們只需要按照要求在代碼中填入對應圖片路徑的參數即可(withopen后填入圖片的路徑精確到圖片完整路徑,rb代表Python文件讀寫的模式)。
最后等待解析驗證碼的結果反饋到控制臺就可以了,圖片中的ym8p,已經成功被解析出來了,親測成功率還是非常高的。
通過Python編程我們已經實現了驗證碼的識別功能,但我們總不可能每次輸入驗證碼都要去打開Pycharm運行一下這段程序吧。那么如何自動化地去測試呢?
這里就要用到我們講過的影刀軟件了,影刀內置了可以添加Python的模塊,我們將自己寫的代碼移植到影刀模塊中,需要的時候調用該模塊即可,方法過程還是蠻簡單的。
1.編寫好相應的模塊預備后期調用,這一步我們已經完成。根據影刀特性在主流程中移植相應的代碼。
2.這里我們將驗證碼圖片放在固定位置便于程序獲取,調用Python模塊進行解析,完成后反饋結果。
本教程只以最簡單的數字混合字母的驗證碼為例,主要目的是體現如何利用其他平臺讓Python編輯的代碼更加實用。后期提高可以解鎖滑動積木式的驗證碼和解析點選類驗證碼圖片。期待和大家一起學習進步,分享更多有趣的知識。