怎样用JavaScript实现验证码的验证

JavaScript07

怎样用JavaScript实现验证码的验证,第1张

用JavaScript实现验证码的验证主要代码如下:

var code //在全局定义验证码

//产生验证码

window.onload = function createCode(){

code = ""

var codeLength = 4//验证码的长度

var checkCode = document.getElementById("code")

var random = new Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R',

'S','T','U','V','W','X','Y','Z')//随机数

for(var i = 0i <codeLengthi++) {//循环操作

var index = Math.floor(Math.random()*36)//取得随机数的索引(0~35)

code += random[index]//根据索引取得随机数加到code上

}

checkCode.value = code//把code值赋给验证码

}

//校验验证码

function validate(){

var inputCode = document.getElementById("input").value.toUpperCase()//取得输入的验证码并转化为大写

if(inputCode.length <= 0) { //若输入的验证码长度为0

alert("请输入验证码!")//则弹出请输入验证码

}

else if(inputCode != code ) { //若输入的验证码与产生的验证码不一致时

alert("验证码输入错误!@_@")//则弹出验证码输入错误

createCode()//刷新验证码

document.getElementById("input").value = ""//清空文本框

}

else { //输入正确时

alert("^-^")//弹出^-^

}

}

。可以识别。滑块验证码的形式也很多,大多都类似下面这样的。

一般类似这样的验证码已经有很成熟的解决方案了。比如js破解,图像识别破解等等。但是我在项目中遇到的验证码有一点不同是下面这种验证码(拼夕夕的验证码)可以看到背景更复杂,而且它使用两个缺口,两个缺口的形状不一样,因此对于此类验证码识别更加困难。

二、采用的方法

对该类新型验证码分析,最开始准备使用深度学习的方法,大力出奇迹,但是有一个现实问题没多少数据。公司目前收集的也只有六七十张,于是只好放弃深度学习,采用传统方法opencv来做。使用opencv做的思路就是,获取滑块图和背景图,进行模板匹配,匹配度最高作为结果输出

1.滑块图、背景图切分

想要拿到干净的滑块图和背景图需要进行js破解,这个破解比较耗时一张验证码大概需要30s,30s后验证码都失

似乎你的问题我已不能直接回答,就在这里说下吧.从你的截图和代码看,你使用的是asp编写的程序.在生成验证码的asp文件中,Session的赋值是没什么问题的,将验证码保存在了Session("psn")中.在后面的js判断中.你的思路是将Session值直接写入判断语句,但在那里使用<%=Session(psn)%>时,这个Session值是不确定的,应该是空值,因为验证码是保存在名为psn的会话里,而此处的psn是个变量,它的值似乎是不确定的,也就是取的并非原来保存验证码的Session.而且这种验证方式形同虚设,对付君子是可行的.验证码使用图片,无非就是为了安全,防止程序读取验证码进行暴力破解,现在你把验证码明白地写在了脚本里,这就没有了安全性可言了.不过这并不是重要的,呵呵.想在客户端验证更理想的办法应该提交时或输入验证码后,将验证码以Ajax的方式提交到服务器验证,并返回判断结果,这种方式是无刷新的,也就是页面是不会刷新的,就像使用js直接判断一样的,淘宝登陆时检查验证码就是使用的这种方法哦.