欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php制作的簡單驗證碼識別代碼

 更新時間:2016年01月26日 08:54:53   投稿:hebedich  
近期研究一些突破驗證碼方面的知識,記錄下來。一方面算是對這幾天學習知識的總結幫助自己理解;另一方面希望對研究這方面的技術同學有所幫助;另外也希望引起網(wǎng)站管理者的注意,在提供驗證碼時多些考慮進去。由于剛剛接觸這方面的知識,理解比較淺顯,有錯誤再所難免

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

驗證碼

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

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

常見類型

思路

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

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

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

實現(xiàn)

下面我們來用PHP的imagecolorsforindex函數(shù)取得圖片所有點的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);
 }
}

結果如下:

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

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

效果:

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

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

下面我們來分析下:


每個驗證碼直接間距4格,左右間距6/10格,上下間距16/10格。

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



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

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

我們再來進行每8個切分,去掉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個后組合成數(shù)組,每次解析圖片RGB換成對應數(shù)組值就得到驗證碼值了。下面來演示下:

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

哈哈,準確率100%

寫在最后

本文的目的是為了讓WEB開發(fā)者在生成驗證碼時注意安全,請勿用于非法目的.

代碼已在github:

相關文章

  • PHP MYSQL簡易交互式站點開發(fā)

    PHP MYSQL簡易交互式站點開發(fā)

    這篇文章主要為大家詳細介紹了PHP MYSQL簡易交互式站點開發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • php文件上傳類的分享

    php文件上傳類的分享

    這篇文章主要為大家分享了php文件上傳類的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 在win系統(tǒng)安裝配置 Memcached for PHP 5.3 圖文教程

    在win系統(tǒng)安裝配置 Memcached for PHP 5.3 圖文教程

    這篇文章主要介紹了在win系統(tǒng)安裝配置 Memcached for PHP 5.3 圖文教程,需要的朋友可以參考下
    2015-03-03
  • thinkPHP5項目中實現(xiàn)QQ第三方登錄功能

    thinkPHP5項目中實現(xiàn)QQ第三方登錄功能

    這篇文章主要介紹了thinkPHP5項目中實現(xiàn)QQ第三方登錄功能,結合實例形式較為詳細的分析了修改QQ登陸接口并整合進thinkPHP5項目中的具體步驟與相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • 強制PHP命令行腳本單進程運行的方法

    強制PHP命令行腳本單進程運行的方法

    本文介紹了一個強制PHP在單進程中執(zhí)行的函數(shù),多用在php命令行中和一些特殊需求的地方,需要的朋友可以參考下
    2014-04-04
  • PHP微信支付實例解析

    PHP微信支付實例解析

    這篇文章主要為大家詳細介紹了PHP微信支付實例,包括PHP微信支付源碼,PHP微信退款源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 利用laravel+ajax實現(xiàn)文件上傳功能方法示例

    利用laravel+ajax實現(xiàn)文件上傳功能方法示例

    最近在做的項目基于Laravel開發(fā),需要用到Ajax上傳,查了些資料,自己整理了下可用的方法。下面這篇文章主要給大家介紹了關于利用laravel+ajax實現(xiàn)文件上傳功能的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • php使用正則表達式去掉html中的注釋方法

    php使用正則表達式去掉html中的注釋方法

    下面小編就為大家?guī)硪黄猵hp使用正則表達式去掉html中的注釋方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Laravel學習教程之本地化模塊

    Laravel學習教程之本地化模塊

    這篇文章主要給大家介紹了關于Laravel學習教程之本地化模塊的相關資料,文中通過示例代碼給大家介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08
  • destoon調用自定義模板及樣式的公告欄

    destoon調用自定義模板及樣式的公告欄

    這篇文章主要介紹了destoon調用自定義模板及樣式的公告欄的方法,簡單實用,需要的朋友可以參考下
    2014-06-06

最新評論