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

資訊專欄INFORMATION COLUMN

php實(shí)現(xiàn)簡單驗(yàn)證碼識(shí)別

JouyPub / 1741人閱讀

摘要:驗(yàn)證碼全自動(dòng)區(qū)分計(jì)算機(jī)和人類的公開圖靈測試英語,簡稱,俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。百科介紹說的簡單點(diǎn)就是隨機(jī)生成的字符,輸出在一張圖片上這里不考慮其他形式的拖拽短信驗(yàn)證碼等等。

一直想寫這個(gè),過了很久今天興趣來了索性記錄下。

驗(yàn)證碼
全自動(dòng)區(qū)分計(jì)算機(jī)和人類的公開圖靈測試(英語:Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。在CAPTCHA測試中,作為服務(wù)器的計(jì)算機(jī)會(huì)自動(dòng)生成一個(gè)問題由用戶來解答。這個(gè)問題可以由計(jì)算機(jī)生成并評(píng)判,但是必須只有人類才能解答。由于計(jì)算機(jī)無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認(rèn)為是人類。
百科介紹

說的簡單點(diǎn)就是隨機(jī)生成的字符,輸出在一張圖片上[這里不考慮其他形式的拖拽/短信驗(yàn)證碼等等]。

常見類型

思路

本文只做演示使用,故取第一張圖片驗(yàn)證碼作為講解示例。

圖片上的每一點(diǎn)都有其RGB值,通過取色器可以獲取到,肉眼觀察可以看出該圖驗(yàn)證碼是純數(shù)字純色背景

通過取色器看出該驗(yàn)證碼背景色RGB值為(212,214,204)

實(shí)現(xiàn)

下面我們來用PHP的imagecolorsforindex函數(shù)取得圖片所有點(diǎn)的RGB值:

$url = "http://210.32.33.91:8080/reader/captcha.php";
$im = imagecreatefromgif($url);
imagegif($im, "1.gif");
$rgbArray = array();
$res = $im;
$size = getimagesize($url);

$wid = $size["0"];
$hid = $size["1"];
for ($i = 0; $i < $hid; ++ $i) {
    for ($j = 0; $j < $wid; ++ $j) {
        $rgb = imagecolorat($res, $j, $i);
        $rgbArray[$i][$j] = imagecolorsforindex($res, $rgb);
    }
}

結(jié)果如下:


各位可能想問這有什么用呢? 下面我們換一種方式來顯示數(shù)據(jù),為背景色輸出,驗(yàn)證碼區(qū)域輸出,再來看下:

for ($i = 0; $i < $hid; $i ++) {
    for ($j = 0; $j < $wid; $j ++) {
        
        if ($rgbArray[$i][$j]["red"] == 212) {
            echo "□";
        } else {
            echo "■";
        }
    }
    echo "
"; }

效果:

這樣一下是不是很清楚了。

但是你可能還是有疑問,盡管可以看出來了,但是如何知道是多少呢?

下面我們來分析下:

每個(gè)驗(yàn)證碼直接間距4格,左右間距6/10格,上下間距16/10格。

我們再來去掉這些干擾點(diǎn),可以看得更清晰些:

是不是很清晰了?可能還是有人會(huì)問,你講這么多到底要怎么才能知道圖片上的數(shù)字是多少.

好吧,說下我的思路,我們將剛剛的換為0和1,而這些數(shù)字形狀是固定的,這樣就可以得到0-9每一個(gè)字的每一個(gè)區(qū)域8*10都有0和1組成了,

我們再來進(jìn)行每8個(gè)切分,去掉4格間距,循環(huán)得出0-9的01組合值:

$dic = array(
    "00011000001111000110011011000011110000111100001111000011011001100011110000011000" => 0,
    "00011000001110000111100000011000000110000001100000011000000110000001100001111110" => 1,
    "00111100011001101100001100000011000001100000110000011000001100000110000011111111" => 2,
    "01111100110001100000001100000110000111000000011000000011000000111100011001111100" => 3,
    "00000110000011100001111000110110011001101100011011111111000001100000011000000110" => 4,
    "11111110110000001100000011011100111001100000001100000011110000110110011000111100" => 5,
    "00111100011001101100001011000000110111001110011011000011110000110110011000111100" => 6,
    "11111111000000110000001100000110000011000001100000110000011000001100000011000000" => 7,
    "00111100011001101100001101100110001111000110011011000011110000110110011000111100" => 8,
    "00111100011001101100001111000011011001110011101100000011010000110110011000111100" => 9
);

得出這10個(gè)后組合成數(shù)組,每次解析圖片RGB換成對應(yīng)數(shù)組值就得到驗(yàn)證碼值了。下面來演示下:

最后為了準(zhǔn)確性,取100個(gè)循環(huán)看看:

哈哈,準(zhǔn)確率100%

寫在最后

本文的目的是為了讓W(xué)EB開發(fā)者在生成驗(yàn)證碼時(shí)注意安全,請勿用于非法目的.

本項(xiàng)目所演示的站點(diǎn)(杭州電子科技大學(xué)圖書館->我的圖書館)無法打開,各位參考原理即可

代碼已在github:https://github.com/chaclee/sf

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

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

相關(guān)文章

  • 驗(yàn)證識(shí)別

    摘要:你說我一個(gè)學(xué)電氣的,怎么就跑來寫驗(yàn)證碼識(shí)別了呢。我當(dāng)時(shí)就念了兩句代碼,茍言歸正傳,驗(yàn)證碼識(shí)別主要分兩部分圖像分割和識(shí)別。其中,分割驗(yàn)證碼是最麻煩的,因?yàn)榛緵]有一勞永逸的分割方法。 原blog在這里>> https://github.com/100steps/B... 因?yàn)樵L問Github太慢所以重新上傳了圖片,下面才是正文。。 這個(gè)鍋本來是若花的,然而不知不覺就甩我背上了。你...

    W4n9Hu1 評(píng)論0 收藏0
  • Python通用驗(yàn)證識(shí)別OCR庫ffffddocr的安裝使用教程

      小編寫這篇文章的主要目的,主要是給大家去做一個(gè)相關(guān)的介紹,介紹的內(nèi)容是關(guān)于Python通用驗(yàn)證碼的一些相關(guān)小技巧,包括有通用驗(yàn)證碼識(shí)別相關(guān)的OCR庫,同時(shí)也會(huì)給大家介紹一些內(nèi)容,介紹包括OCR庫ddddocr安裝使用教程,下面小編就給大家詳細(xì)解答下。  前言  在使用自動(dòng)化登錄網(wǎng)站的時(shí)候,經(jīng)常輸入用戶名和密碼后會(huì)遇到驗(yàn)證碼。今天介紹一款通用驗(yàn)證碼識(shí)別OCR庫,對驗(yàn)證碼識(shí)別徹底說拜拜,它的名字是...

    89542767 評(píng)論0 收藏0
  • PHP基于laravel框架獲取微博數(shù)據(jù)之一 模擬新浪微博登錄

    摘要:模擬登錄新浪微博的核心,也是與模擬登錄最大的不同,密碼加密。已經(jīng)實(shí)現(xiàn)模擬新浪微博登錄的功能,之后不再更新。 參考資料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leopard/article/details/51148904 http://www....

    galois 評(píng)論0 收藏0
  • 寫個(gè)腳本薅區(qū)塊魚羊毛

    摘要:成果展示總結(jié)這個(gè)腳本就是簡單的利用的庫,來模擬用戶注冊的流程,以達(dá)到邀請用戶的目的。這個(gè)腳本也有很多不完善的地方,比如驗(yàn)證碼識(shí)別機(jī)器人檢測一些錯(cuò)誤判斷都沒有,待完善的地方還有很多。這個(gè)腳本只是為了和大家交流學(xué)習(xí)。 ??區(qū)塊魚是一個(gè)基于區(qū)塊鏈的游戲,這個(gè)游戲目前有個(gè)邀請活動(dòng),邀請好友注冊,送相應(yīng)種類的魚,不同的魚價(jià)格不一樣 普通魚 0.015 ETH起(邀請3個(gè)好友) 稀缺魚 0.05...

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

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

0條評(píng)論

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