成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

15分鐘破解網(wǎng)站驗(yàn)證碼

hlcfan / 2227人閱讀

摘要:目前花費(fèi)了兩分鐘。我這地方使用卷積神經(jīng)網(wǎng)絡(luò),。這地方對(duì)卷積神經(jīng)網(wǎng)絡(luò)算法就不做詳細(xì)介紹,感興趣的同學(xué),可以學(xué)習(xí)一下。

概述

??很多開發(fā)者都討厭網(wǎng)站的驗(yàn)證碼,特別是寫網(wǎng)絡(luò)爬蟲的程序員,而網(wǎng)站之所以設(shè)置驗(yàn)證碼,是為了防止機(jī)器人訪問網(wǎng)站,造成不必要的損失。現(xiàn)在好了,隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,機(jī)器識(shí)別驗(yàn)證碼的問題比較好解決了。

樣本采集工具

??這里我們采用wordpress的Really Simple CAPTCHA生成驗(yàn)證碼的插件,之所以選擇這個(gè)插件,一個(gè)是它的安裝量很大,二個(gè)是因?yàn)樗情_源的,我們可以利用它批量的生成驗(yàn)證碼圖片。

目標(biāo)估計(jì)

??我們通過demo網(wǎng)站得知,Really Simple CAPTCHA生成的是包含4個(gè)數(shù)字或者字母的圖片,通過閱讀源碼得知,這個(gè)插件還屏蔽了O和I這兩個(gè)比較容易混淆的字母,也就是說,還剩下32個(gè)字符,看來可以完成。
??目前花費(fèi)了兩分鐘。

依賴

??我們要用到以下的工具和庫(kù)。

python3

opencv

keras

tensorflow

創(chuàng)建樣本集

??為了達(dá)到目的,我們首先要準(zhǔn)備樣本集,樣本如下:

使用Really Simple CAPTCHA插件的源碼,我們很方便的批量生成10000個(gè)驗(yàn)證碼圖片和對(duì)應(yīng)的結(jié)果,待我們生成完成后,大概如下:

這地方大家可以根據(jù)自己的實(shí)際情況修改Really Simple CAPTCHA插件的源碼,來生成自己想要的樣本集。如果你覺著麻煩,也可以下載我生成好的。

??目前為止,我們花了五分鐘。

如何訓(xùn)練

??我們現(xiàn)在有了樣本集了,我們可以直接那圖片和對(duì)應(yīng)的結(jié)果直接進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。

只要我們的樣本夠多,最終也能達(dá)到我們想要的效果。

??但我們也可以采用更好的訓(xùn)練方法,這個(gè)訓(xùn)練方法使用更少的樣本數(shù)據(jù),但是結(jié)果要比直接訓(xùn)練的方法好很多,我想你已經(jīng)猜到了,這個(gè)方法就是把圖片中的四個(gè)字符切割開,形成四個(gè)樣本。這方法之所以可行,是因?yàn)樗械尿?yàn)證碼圖片都是4個(gè)字符的。

??10000張圖片,一張一張手動(dòng)用PS去切割,肯定不現(xiàn)實(shí),而且由于圖片的橫向排列并不是等間距的,字符間的距離大小不一致,手動(dòng)切割肯定不可能了。

??其實(shí)我們只要畫出一個(gè)矩形,保證矩形框里只有字符就可以,然后從圖片中切出這樣的一個(gè)矩形,就形成了一個(gè)單個(gè)字符的圖片樣本。幸運(yùn)的是,這個(gè)操作opencv已經(jīng)幫我們實(shí)現(xiàn)了,opencv有個(gè)函數(shù)叫做findContours(),可以按照同樣色值的區(qū)域裁剪我們想要的矩形。

首先準(zhǔn)備一個(gè)圖片:

轉(zhuǎn)換圖片為黑白色。這樣有字符的地方為黑色,空白為白色,便于opencv裁剪。


-接下來我們用opencv的findContours函數(shù)切割圖片。

??接下來,我們就把圖片從左到右進(jìn)行切割,并存儲(chǔ)切割后的圖片,以及圖片對(duì)應(yīng)的字符。但是實(shí)際操作的過程中,我發(fā)現(xiàn)一個(gè)問題,就是有時(shí)候兩個(gè)字符靠的太近,導(dǎo)致opencv在切割的時(shí)候,把兩個(gè)字符切割刀一個(gè)圖片里了,比如:

切割完的效果是:

如果不解決這個(gè)問題,我們的樣本集就不準(zhǔn)了,那訓(xùn)練出來的模型也就不可能正確了。我的解決方法是,首先設(shè)置一個(gè)字符寬最大的像素,如果超過這個(gè)像素,則認(rèn)為一個(gè)圖片中包含了兩個(gè)字符,然后我們選擇把這個(gè)圖片對(duì)半切割,分成兩個(gè)字符。例如:

好,我們現(xiàn)在得到了一個(gè)驗(yàn)證碼圖片對(duì)應(yīng)的4個(gè)字符的圖片,現(xiàn)在我們把所有的樣本圖片都切割好,然后,把相同的字符對(duì)應(yīng)的圖片放到一個(gè)文件夾,這么做的目的是盡量多的找出同一個(gè)字符的多種樣式。結(jié)果如下:

??到目前為止,我花了10分鐘。

訓(xùn)練模型

??因?yàn)槲覀冎皇亲R(shí)別圖片對(duì)應(yīng)的數(shù)字或者字母,所以我們不需要特別復(fù)雜的神經(jīng)網(wǎng)絡(luò)算法。識(shí)別字符比識(shí)別小貓小狗的簡(jiǎn)單多了。
??我這地方使用卷積神經(jīng)網(wǎng)絡(luò),two convolutional layers and two fully-connected layers。

這地方對(duì)卷積神經(jīng)網(wǎng)絡(luò)算法就不做詳細(xì)介紹,感興趣的同學(xué),可以google學(xué)習(xí)一下。
??訓(xùn)練完成后,我們需要測(cè)試一下。15分鐘花完。

總結(jié)

整個(gè)過程看起來很簡(jiǎn)單:

從使用我們上述提到的插件的wordpress網(wǎng)站上下載驗(yàn)證碼圖片

把圖片切割成包含單個(gè)字符的小圖片

使用神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練模型

預(yù)測(cè)新的驗(yàn)證碼圖片對(duì)應(yīng)的字符

下面是我的測(cè)試:

代碼

你可以從這得到完整的代碼和示例圖片,你可以參照README來運(yùn)行相關(guān)的程序。

轉(zhuǎn)載自我的博客捕蛇者說

英文原文

下載代碼

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41090.html

相關(guān)文章

  • 普通網(wǎng)站防暴力破解的新設(shè)計(jì)

    摘要:前端防暴力破解的一個(gè)設(shè)計(jì)地址描述傳統(tǒng)的防范暴力破解的方法是在前端登錄頁(yè)面增加驗(yàn)證碼雖然能有一定程度效果但是用戶也跟著遭罪驗(yàn)證碼越復(fù)雜用戶登錄的失敗率越高于是最近我想了一個(gè)新的設(shè)計(jì)前端在登錄時(shí)采用解密的方式獲取密鑰把密鑰與表單以前發(fā)往后端用 前端防暴力破解的一個(gè)設(shè)計(jì) Demo 地址 https://github.com/GitHub-Laz... 描述 傳統(tǒng)的防范暴力破解的方法是在前端登...

    xiaochao 評(píng)論0 收藏0
  • 普通網(wǎng)站防暴力破解的新設(shè)計(jì)

    摘要:前端防暴力破解的一個(gè)設(shè)計(jì)地址描述傳統(tǒng)的防范暴力破解的方法是在前端登錄頁(yè)面增加驗(yàn)證碼雖然能有一定程度效果但是用戶也跟著遭罪驗(yàn)證碼越復(fù)雜用戶登錄的失敗率越高于是最近我想了一個(gè)新的設(shè)計(jì)前端在登錄時(shí)采用解密的方式獲取密鑰把密鑰與表單以前發(fā)往后端用 前端防暴力破解的一個(gè)設(shè)計(jì) Demo 地址 https://github.com/GitHub-Laz... 描述 傳統(tǒng)的防范暴力破解的方法是在前端登...

    stackvoid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

hlcfan

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<