再談驗證碼 扭曲以及部分反色

2021-06-04 18:48:26 字數 1076 閱讀 6198

經過上次的**驗證碼以及簡單驗證碼實現,我們簡單實現了驗證碼,照說最終實現的應該可以了,起碼應付一部分破解菜鳥應該可以了,但是,隨著破解技術的不斷提高,我們也必須提高破解難度,正所謂:魔高一尺,道高一丈!

另外,下面只有兩個函式的**,具體實現的**上篇文章有,下面的函式直接用在輸出前的末尾即可,另外,換了下字型,上次的字型在這裡很難看清

好了,廢話不多說,現在先實現驗證碼的扭曲,思路就是根據某個連續函式來錯開的每一行,於是,sin函式就是個不錯的選擇:

function distort($img,$scale = 8) 

}imagedestroy($img);

return $new_img;

}

好了,來看看效果:

不錯吧,效果還是可以的

下面介紹部分反色,很簡單,為了圖方便,我直接用矩形區域反色:

function part_reverse($img,$rw = 40 ,$rh = 30,$border = 10)

好了,就介紹這兩個,實際應用時,可以兩個一起使用(當然,要注意調整下引數,否則連人都看不清的),那樣效果更好,尤其是字元是漢字的時候。

在我的印象裡,有幾個公司的驗證碼是做的很不錯的,人人、豆瓣、google,其它的印象不是很深刻,有空也會拿他們的來實現試試~

然後,順便給上次的**驗證碼補充下,介紹下一些比較高階的驗證碼吧:

1.問題驗證碼,無非是將問題畫在圖形上讓使用者回答,只要準備足夠的問題就行,當然,也可以直接讓使用者算數學問題,加減法神馬的都行,限制你的只有想象力了~

2.實物驗證碼,就是準備一大堆實物,讓使用者說出名稱,但是答案不唯一,但是可以讓使用者做個選擇題,很顯然,缺點是實物有限,準備這個資料庫有點耗時間,而且得時常更新,因為如果就那幾個物體的話,很容易被破解

3.填空驗證碼,比如 "he lo w rld",讓使用者填出缺少的字母,很容易,就是l 和 0 麼,而且**廣泛,不用手工採集,隨便去網上扒一篇英文,調幾個簡單的句子,隨便抽幾個字元,讓使用者填空即可,當然,中文也可以,缺點是你得準備乙個哪些句子是「簡單的」的資料庫。(這個方法是本人自己想的,實現起來不知道是否可行)

PHP 驗證碼 扭曲 粘連 變形

一,緒論 由於專案需要,需要加強目前的驗證碼,我們參照的物件是支付寶。基於php codeigniter 框架,放置在下面的路徑下。二,主要 class verifycode 輸出驗證碼,返回值是驗證碼的字串表示 author 馮煜博 return string public function sh...

爬蟲反爬之驗證碼

if name main chaojiying chaojiying client 超級鷹使用者名稱 超級鷹使用者名稱的密碼 96001 使用者中心 軟體id 生成乙個替換 96001 本地檔案路徑 來替換 a.jpg 有時win系統須要 print chaojiying.postpic im,19...

爬蟲驗證碼總是出錯 常用的反爬蟲封禁手段概覽

一般的 都不歡迎爬蟲流量,消耗伺服器資源不說,還會把自己的商業資料爬走,於是就誕生了各種各樣的反爬蟲手段。從介面的角度來說,匿名的介面一定是可以濫用的,只是破解成本的問題,而有登入狀態的介面一般不容易被濫用。客戶端反爬一定是可以破解的,服務端反爬往往不一定能夠破解。這篇文章有點長,沒時間看的同學可以...