網頁爬蟲遇到難以通過圖像識別繞過的驗證碼時,獲取整個驗證碼庫,人工標註答案,再進行圖像比對,是否可行?


沒有所謂的「驗證碼庫」。

常見的驗證碼都是通過程序實時生成的:隨機生成 N 位數字、字母,然後通過某種演算法扭曲、旋轉或變形之後依次畫到背景上,最後再生成一些干擾線和噪點,就做出了一張驗證碼。

理論上講,你可能遇到兩張驗證碼圖片的內容相同,但是你絕對不會碰到兩張驗證碼圖片本身完全相同。「整個驗證碼庫」是一個無限集,你永遠拿不完。

(P.S.不排除極極極極極極極極個別腦殘的網站真的是隨機一張已有的驗證碼圖片)


不可行,那是生成的。
可以人工標記一部分樣本,送入網路訓練一個分類器


你說的很對,如果你想採用計算機學習等數據挖掘演算法,標註和特徵抽取和選擇是必須經過的步驟。

如果有人說:我沒有用案例庫也做出來了,那他要麼有意隱瞞,要麼自己沒有覺察到。比如,幾年前,為識別58同城和趕集網的電話號碼圖片,先不斷觀察,他們每三天換一下,扭轉角度,粘連特徵等等,仔細看,最後用一個邏輯判斷的演算法把他們的絕大多數模式都覆蓋了。這個案例下,看起來沒有標註樣本庫,其實,是在腦子中不自覺地做了,做了特徵抽取、選擇和建模,最後在腦子中輸出了一個決策樹。這個過程是不是跟數據挖掘教程說的一樣?

真隨機生成器,要建立一個十分十分難,建立好了都會作為一個新聞發布出去的,所以,幾乎很多問題都可以用標註-抽取-選擇-建模過程來反向構建。而且我們說的數據挖掘就是要在大量數據缺失、特徵維度極其稀疏的情況下來識別規律(模式),比如,智能推薦,看起來有海量大數據,落實到某個消費者,數據維度是極其稀疏的。就目前技術來看,這套方法應該是最能看到亮光的。

要是你學過資訊理論,還是電子對抗專業的,有沒有試試用來算彩票?我們周圍普通環境,沒有純隨機的東西,因為所有東西都有瑕疵,從而體現出一定模式,這就足夠了。

對於我們做網路爬蟲的從業者來說,最需要應對的是反爬,有機器人識別演算法,根據行為判斷是否是爬蟲,此時,標註和特徵建模又要上場了,比如,滑塊驗證碼,圖像識別部分可以半天搞定,剩下的就是不斷應對機器人識別。這要比滑塊識別難多了,而且攻防過程持續不斷,我特意給網路爬蟲軟體加了一個行為錄製和標註功能,正例反例不斷收集,行為軌跡特徵抽取,建模,機器學習,最後把一個模擬器就訓練出來了。

總之,收集樣例庫和標註是必做的,就看你做到哪種程度。


驗證碼沒有庫,基本上都是程序自動隨機生成的。所以這種窮舉的方法不現實。

可行的辦法是進行驗證碼識別,常見的識別方法很多,比如神經網路,圖像處理演算法,模式匹配等等。

我曾今自己在這塊寫過一些文章,原理不複雜,你如果懂一些程序語言,你也可以按照我的思路實現驗證碼自動破解識別,博客園「流浪的軍刀「就是我的博客。以下是兩篇我寫的關於驗證碼識別的文章,給你參考:
web數據採集核心技術分享系列(三)如何破解驗證碼?圖像分析?特徵匹配?人工智慧?第三方集成?...哪個最強大?
web數據採集核心技術分享系列(四)利用神經網路實現網頁驗證碼破解

另外,我還寫了一個系列關於如何建立一套強大的網頁數據採集系統的文章,如果感興趣你也可以看看:
web數據採集核心技術分享系列(一)做一個強大的web數據採集系統,你需要什麼?
web數據採集核心技術分享系列(二)如何提取信息?字元串?正則?xpath?xslt?自定義?...什麼才是王道?

希望對你有用,驗證碼只是網頁採集其中一個問題,網頁採集如果要做的非常好,有很多問題需要解決,比如IP資源,網頁千奇百怪的變化,網站不穩定響應等等。對此類問題感興趣的歡迎和我交流。


理論上不可行,實際上可行。
沒有所謂的「驗證碼庫」。但是可以經過預處理。因為種種考慮驗證碼的創建也不會太複雜。所以可以跳出具有特徵識別的驗證碼。然後自己對應建立一個字型檔。識別字元特徵。在0-9和加減乘方向可以做到。


既然想人工標註整個驗證碼庫,為何不標註了之後用卷積神經網路識別?


哪有什麼驗證碼庫?都是動態生成的。


驗證碼是用某些字母或者數字集合隨機生成的,然後加一些干擾,並沒有所謂的驗證碼庫,看一下第三方的驗證碼識別的平台吧,價錢也都能接受,準確率也挺高的。
PS:看來題主沒做過web開發,不會生成驗證碼。


兩分錢一個,已經是良心價了。


老師在教寫網站的時候就講過。
如果我是你的競爭對手,恰巧發現你的只有一百張圖片,那你就死定了。
所以老師教了一種動態生成驗證碼方法...


推薦閱讀:

簡訊驗證碼平台哪家速度快又穩定,推薦下?

TAG:驗證碼 | 爬蟲計算機網路 | 網頁爬蟲 |