本篇內(nèi)容主要講解“如何利用html5 canvas破解簡單驗(yàn)證碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何利用html5 canvas破解簡單驗(yàn)證碼”吧!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供渭源網(wǎng)站建設(shè)、渭源做網(wǎng)站、渭源網(wǎng)站設(shè)計(jì)、渭源網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、渭源企業(yè)網(wǎng)站模板建站服務(wù),10多年渭源做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。代碼如下:
var ctx = canvas.getContext('2d');
ctx.drawImage(img,0,0);
var c = ctx.getImageData(0,0,img.width,img.height);
for(i=0; i
var r = c.data[x];
var g = c.data[x+1];
var b = c.data[x+2];
if(r+g+b > 350){
c.data[x] = c.data[x+1] = c.data[x+2] = 0;
}
else{
c.data[x] = c.data[x+1] = c.data[x+2] = 255;
}
}
}
然后我用畫圖工具放大圖片,觀察了一下,得出每個數(shù)字是一個12*8像素的矩形,再之后就求出每一個數(shù)字對應(yīng)的像素個數(shù),發(fā)現(xiàn)0和8還有6和9的像素個數(shù)是一樣的,就進(jìn)行一下特判(比如正中間有像素的就肯定是8而不是0了)。然后……還是觀察一下……每個數(shù)字對應(yīng)的矩陣的坐標(biāo)……寫出這個函數(shù):
代碼如下:
function getNum(imgData,x1,y1,x2,y2){
var num = 0;
for(i=y1; i
if(imgData.data[x] == 255)num++;
}
}
switch(num)
{
case 56:{
j = (x1+x2)/2;
i = (y1+y2)/2;
var x = (i*4)*imgData.width+(j*4);
if(imgData.data[x] == 255)
return 8;
else
return 0;
}
case 30:return 1;
case 50:return 2;
case 51:return 3;
case 48:return 4;
case 57:return 5;
case 58:{
i = y2-2;
j = x1;
var x = (i*4)*imgData.width+(j*4);
if(imgData.data[x] == 255)
return 9;
else
return 6;
}
case 37:return 7;
default:return 0;
}
}
原文用了神經(jīng)網(wǎng)絡(luò)來判斷,準(zhǔn)確率大大提高,我不會用,所以就沒用了……
我用這個方法獲得的驗(yàn)證碼準(zhǔn)確率也有95%以上,暫時(shí)夠用了。有空再研究一下神經(jīng)網(wǎng)絡(luò)好了。
有需要的同學(xué)可以拿去用,Chrome瀏覽器要先裝TamperMonkey,F(xiàn)irefox則是GeaseMonkey,然后安裝這個腳本就ok了。
到此,相信大家對“如何利用html5 canvas破解簡單驗(yàn)證碼”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!