本篇內(nèi)容主要講解“如何利用html5 canvas破解簡(jiǎn)單驗(yàn)證碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何利用html5 canvas破解簡(jiǎn)單驗(yàn)證碼”吧!
創(chuàng)新互聯(lián)建站不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對(duì)營(yíng)銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營(yíng)銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級(jí),滿足企業(yè)一站式網(wǎng)絡(luò)營(yíng)銷推廣需求,讓再小的品牌網(wǎng)站設(shè)計(jì)也能產(chǎn)生價(jià)值!
代碼如下:
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;
}
}
}
然后我用畫圖工具放大圖片,觀察了一下,得出每個(gè)數(shù)字是一個(gè)12*8像素的矩形,再之后就求出每一個(gè)數(shù)字對(duì)應(yīng)的像素個(gè)數(shù),發(fā)現(xiàn)0和8還有6和9的像素個(gè)數(shù)是一樣的,就進(jìn)行一下特判(比如正中間有像素的就肯定是8而不是0了)。然后……還是觀察一下……每個(gè)數(shù)字對(duì)應(yīng)的矩陣的坐標(biāo)……寫出這個(gè)函數(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)確率大大提高,我不會(huì)用,所以就沒用了……
我用這個(gè)方法獲得的驗(yàn)證碼準(zhǔn)確率也有95%以上,暫時(shí)夠用了。有空再研究一下神經(jīng)網(wǎng)絡(luò)好了。
有需要的同學(xué)可以拿去用,Chrome瀏覽器要先裝TamperMonkey,F(xiàn)irefox則是GeaseMonkey,然后安裝這個(gè)腳本就ok了。
到此,相信大家對(duì)“如何利用html5 canvas破解簡(jiǎn)單驗(yàn)證碼”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!