某卡驗證碼獲取識別登錄
前言
前短時間夜幕團隊的哲哥帶來一個強大的庫,一個驗證碼識別庫 ddddocr,小編第一時間看到后就收藏了,最近有空就找了一個例子來試試。
這次是某卡網(wǎng)站的登錄,在試驗這個庫時,順便教大家驗證碼怎么獲取,因為有一種驗證碼定位到驗證碼鏈接后,去請求鏈接下載,再去識別下載后的本地圖片,即使識別的結(jié)果與下載的一樣,但就是不能登錄。
其次 ddddocr 這個庫比較適用如下的這種驗證碼識別,小編與某度的 OCR 對比,效果好太多了:
驗證碼獲取
打開登錄網(wǎng)頁,這個登錄頁面初始頁面顯示的是動態(tài)手機密碼登錄,且是沒驗證碼的,我們需要使用賬號密碼登錄,及驗證碼出現(xiàn)流程如下:
1.點擊手機密碼登錄
2.輸入賬號,密碼
3.點擊登錄,這時驗證碼才會彈出
4.識別填寫驗證碼
5.再次點擊登錄,完成整個流程
現(xiàn)在我們就來解刨這個流程,打開開發(fā)者工具定位到驗證碼元素,可看到對應的鏈接:
從上圖看出,鏈接顯示的驗證碼碼與輸入框那里的驗證碼一致。
好,到這里一般是直接請求這個鏈接,把驗證碼下載到本地,進行識別,在把驗證碼提交上去,登錄,這思路沒有錯,一個鏈接對應一個驗證碼,有很多網(wǎng)站就這樣的。
但有一些網(wǎng)站,這樣做是不行的,一個鏈接對應多個驗證碼,我們打開鏈接,進行對比,會發(fā)現(xiàn),鏈接一樣,打開的驗證碼與輸入框顯示的不一樣:
前端顯示的是 bcdz,而鏈接打開后顯示卻是 FYUW,兩個不一樣的結(jié)果,拿 FYUW 輸入框中,是可以登陸成功的,這里就不放成功跳轉(zhuǎn)的截圖了,不信的話可試試:
現(xiàn)在來解釋一下為什么,學過計算機網(wǎng)絡的話,理解應該方便點,就是一個握手協(xié)議,。
打開瀏覽器,打開登錄網(wǎng)頁,pc 端會攜帶一個 cookie 給對方,相當于握上手了,連接上了。
cookie 作為此次請求這個網(wǎng)站的標識,當點擊登錄驗證碼彈出時,這個驗證碼也是通過這個握手連接對應此次登錄需要的驗證碼。
盡管顯示的不一樣,但都是在此次握手的通道中,所以可以用不一樣的驗證碼輸入進去登錄上。
如果得到驗證碼鏈接,直接使用 requests 去請求下載驗證碼,相當于重新打開一個瀏覽器去訪問,重新建立了一個握手通道,所以識別出來的碼不能使用。
獲取思路
思路也是比較簡單的,可以使用 selenium 進行操作,提交賬號密碼都是常規(guī)操作。
主要的是驗證碼,先獲取驗證碼鏈接,再在同一個瀏覽器中打開一個新窗口,在新窗口中打開驗證碼鏈接,這樣就保證了驗證碼與此次登錄頁面在同一個通道中。
然后使用 pyautogui 庫自動右鍵保存圖片,操作部分代碼:
保存下來圖片后,就可以使用強大的 ddddocr 進行識別了,小編使用的體驗挺不錯,簡介方便,準確度高,;某度的 OCR 調(diào)用又麻煩,識別準確度巨低。
一個效果視頻如下,完整代碼回復關鍵詞獲取。
源碼獲取
在公眾號對話框回復關鍵字“卡卡”即可獲取
END
讀者交流群已建立,找到我備注 “交流”,即可獲得加入我們~
聽說點 “在看” 的都變得更好看吶~
關注關注小編唄~小編給你分享爬蟲,數(shù)據(jù)分析,可視化的內(nèi)容噢~
掃一掃下方二維碼即可關注我噢~
-END-








