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