驗證碼分為如下幾類:數(shù)字型、字符型、符號型、綜合型。
一般驗證碼屬于數(shù)字型的,不過有的圖片中生成了不少彩色和黑白的噪音點(指驗證圖片上的斑點)。那么我們應(yīng)該怎么去識別呢?傳統(tǒng)的驗證碼識別方式很簡單,由于數(shù)字的位置是固定的,所以我們只需要提取每一幅數(shù)字的圖片(沒有噪音點的)然后把每一個特殊數(shù)字獨有的象素位置記錄下來,然后在網(wǎng)絡(luò)上提取需要破解的特征碼,祛除噪音點,對其位置和記錄位置進行比對,那就是么就能確定相應(yīng)的數(shù)字了。
總結(jié)一下傳統(tǒng)的就是:
1.先分析驗證碼,前景顏色是否不定
2.然后把驗證碼的寬度/驗證碼文字個數(shù),比如一驗證碼下載后寬度為60,有4個數(shù)字,那么就60/4=15,然后保存每個字,如果只有數(shù)字保存0-9數(shù)字到位圖文件,如果英文那更麻煩點,0-9,A-Z都要保存到位圖,位圖的前景色都不變,保持一種顏色,背景隨便你改不改
3.如果前景要變則將文字統(tǒng)一為同種顏色,每個數(shù)字0-9的點陣都有個公共點,取該公共點顏色然后把前景全部統(tǒng)一成一種顏色,比如白色{255,255,255},位圖的結(jié)構(gòu)是BGR,而不是RGB
4.然后進行比較,如果驗證碼的一點為白色,第2步保存的位圖同一點也是白色,那么頻率增加1
5.最后頻率最高的就是驗證碼了!
接下來要做的就是做個post程序了,這個太簡單了,代碼你就自己寫吧!不過也要做到如下細節(jié):做成多線程程序進行發(fā)貼,不然程序會失去響應(yīng)的。最好是可以導(dǎo)入大量的代理IP的,然后就是發(fā)貼的內(nèi)容最后加上幾個隨機字符,這樣可以防止重復(fù)貼的過濾!最重要的,只是做測試,發(fā)貼量不要太多、不要亂發(fā)廣告貼!
其實上述方法已經(jīng)不是只是對驗證碼進行識別了,完全可以用到現(xiàn)實生活中去,比如說手寫體識別、車牌識別等等,但是現(xiàn)實生活中我們還要進行更多的加工,比如說圓形檢測,多邊形檢測等等。所以說從網(wǎng)絡(luò)安全技術(shù)中,也有很多東西能造福社會,還等待我們繼續(xù)創(chuàng)造!