當前位置:
首頁 > 最新 > 將驗證碼識別功能集成到現有的爬蟲框架

將驗證碼識別功能集成到現有的爬蟲框架


驗證碼的識別

過年期間我曾經寫過一篇文章《一次簡單的驗證碼識別以及思考》, 目前已經對該功能做了一些優化,可以支持幾種類型的驗證碼識別。其核心思想仍然是上一篇文章所提到的,使用tensorflow來訓練標註過的驗證碼。目前,多種類型的驗證碼訓練完之後可以放到一個模型中。未來,有新增的驗證碼類型通過訓練之後也可以整合到這個模型中。

通過多次訓練得到的經驗大致是,一種類型的驗證碼標註4000-5000個數據,就能獲得90%以上的識別準確率。

集成到爬蟲框架

爬蟲框架NetDiscovery,github地址:https://github.com/fengzhizi715/NetDiscovery

對於驗證碼的識別,最終暴露出來是一個web服務。該web服務採用Vert.x進行開發,對於爬蟲而言,只需知道它是一個web服務即可,無需知道後面的邏輯。而且,web服務的地址也可能會更換。

所以,我在爬蟲框架中封裝了一個工具方法,只需要傳入圖片的url地址就能夠返回驗證碼的內容。

測試幾張圖片

執行結果:

經過測試後,發現只有第一個驗證碼是識別錯誤的,其餘五個都能夠正確地識別出驗證碼中的數字和字母。

第一個驗證碼正確的值應該是862DF,而不是862FF。

識別完驗證碼之後,爬蟲就可以模擬「用戶」的登錄行為,登錄成功後記錄下Header中的「Set-Cookie」的值,後面的操作就可以使用這個Cookie的值。


NetDiscovery的未來

首先,NetDiscovery需要增加多種類型驗證碼的識別,需要不斷的標註數據。

其次,NetDiscovery打算做成一個比較通用的爬蟲框架,雖然最近工作比較繁忙,但是每周仍然會有代碼的提交。

下一個比較大的功能,應該是完成跟圖像框架的結合。目前NetDiscovery的selenium模塊可以實現對網頁的截圖,未來打算實現從截取的圖片中提取有用的信息。這樣從一定程度上能夠對抗反爬蟲。

關注【Java與Android技術棧】


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java與Android技術棧 的精彩文章:

一次簡單的驗證碼識別以及思考

TAG:Java與Android技術棧 |