图形验证码输入错误咋输

情形一:图形验证码跟短信验证码一起,只需要将后台提供的动态链接填到(id="img")的src中即可生成动态验证码。
然后,在需要请求接口的地方,只需把(id="imgCode")中用户输入的信息通过ajax传给后台,验证验证码是否正确。
原理(后台):后台通过session存储图片上的字符串,和之后前台请求过来的带的输入的字符串参数,做比较,判断是否一样。
&!doctype html&
&meta charset="UTF-8"&
&title&图形验证码&/title&
&div class="imgCodeBox"&
&label for="imgCode"&图形验证码&/label&
&input type="text" placeholder="请输入验证码" id="imgCode"&
&img src="" id="img"&
情形二:用cavas,但是没有安全性,考虑到实用性的话,还是用情形一的好
&!doctype html&
&meta charset="UTF-8"&
&title&测试&/title&
&canvas id="canvas" width="120" height="40"&&/canvas&
&a href="#" id="changeImg"&看不清,换一张&/a&
/**生成一个随机数**/
function randomNum(min,max){
return Math.floor( Math.random()*(max-min)+min);
/**生成一个随机色**/
function randomColor(min,max){
var r = randomNum(min,max);
var g = randomNum(min,max);
var b = randomNum(min,max);
return "rgb("+r+","+g+","+b+")";
drawPic();
document.getElementById("changeImg").onclick = function(e){
e.preventDefault();
drawPic();
/**绘制验证码图片**/
function drawPic(){
var canvas=document.getElementById("canvas");
var width=canvas.
var height=canvas.
var ctx = canvas.getContext('<span style="background-color: #f5f5f5; color: #d');
ctx.textBaseline = 'bottom';
/**绘制背景色**/
ctx.fillStyle = randomColor(<span style="background-color: #f5f5f5; color: #0,<span style="background-color: #f5f5f5; color: #0); //颜色若太深可能导致看不清
ctx.fillRect(<span style="background-color: #f5f5f5; color: #,<span style="background-color: #f5f5f5; color: #,width,height);
/**绘制文字**/
var str = 'ABCEFGHJKLMNPQRSTWXY';
for(var i=<span style="background-color: #f5f5f5; color: #; i&<span style="background-color: #f5f5f5; color: #; i++){
var txt = str[randomNum(<span style="background-color: #f5f5f5; color: #,str.length)];
ctx.fillStyle = randomColor(<span style="background-color: #f5f5f5; color: #,<span style="background-color: #f5f5f5; color: #0);
//随机生成字体颜色
ctx.font = randomNum(<span style="background-color: #f5f5f5; color: #,<span style="background-color: #f5f5f5; color: #)+'px SimHei'; //随机生成字体大小
var x = <span style="background-color: #f5f5f5; color: #+i*<span style="background-color: #f5f5f5; color: #;
var y = randomNum(<span style="background-color: #f5f5f5; color: #,<span style="background-color: #f5f5f5; color: #);
var deg = randomNum(-<span style="background-color: #f5f5f5; color: #, <span style="background-color: #f5f5f5; color: #);
//修改坐标原点和旋转角度
ctx.translate(x,y);
ctx.rotate(deg*Math.PI/<span style="background-color: #f5f5f5; color: #0);
ctx.fillText(txt, <span style="background-color: #f5f5f5; color: #,<span style="background-color: #f5f5f5; color: #);
//恢复坐标原点和旋转角度
ctx.rotate(-deg*Math.PI/<span style="background-color: #f5f5f5; color: #0);
ctx.translate(-x,-y);
/**绘制干扰线**/
for(var i=<span style="background-color: #f5f5f5; color: #; i&<span style="background-color: #f5f5f5; color: #; i++){
ctx.strokeStyle = randomColor(<span style="background-color: #f5f5f5; color: #,<span style="background-color: #f5f5f5; color: #0);
ctx.beginPath();
ctx.moveTo( randomNum(<span style="background-color: #f5f5f5; color: #,width), randomNum(<span style="background-color: #f5f5f5; color: #,height) );
ctx.lineTo( randomNum(<span style="background-color: #f5f5f5; color: #,width), randomNum(<span style="background-color: #f5f5f5; color: #,height) );
ctx.stroke();
/**绘制干扰点**/
for(var i=<span style="background-color: #f5f5f5; color: #; i&<span style="background-color: #f5f5f5; color: #0; i++){
ctx.fillStyle = randomColor(<span style="background-color: #f5f5f5; color: #,<span style="background-color: #f5f5f5; color: #5);
ctx.beginPath();
ctx.arc(randomNum(<span style="background-color: #f5f5f5; color: #,width),randomNum(<span style="background-color: #f5f5f5; color: #,height), <span style="background-color: #f5f5f5; color: #, <span style="background-color: #f5f5f5; color: #, <span style="background-color: #f5f5f5; color: #*Math.PI);
ctx.fill();
情形二转自:https://blog.csdn.net/meishuixingdeququ/article/details/
情形三、用js产生随机数实现
1、创建图形码容器
&label class="myLabel"&图形码:
&input type = "button" id="code" onclick="createCode()" style="border: 0;background-color:padding: 0;"/&&/label&
2、产生验证码并在页面加载时和点击时调用
    // 图形验证码
var //在全局定义验证码
//产生验证码
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 = 0; i & codeL i++) {//循环操作
var index = Math.floor(Math.random()*36);//取得随机数的索引(0~35)
code += random[index];//根据索引取得随机数加到code上
checkCode.value =//把code值赋给验证码
阅读(...) 评论()短信验证码、图形验证码、邮件验证的自动化测试
我的图书馆
短信验证码、图形验证码、邮件验证的自动化测试
& 短信验证码、图形验证码、邮件验证问题在自动化测试中是一个很常见的问题,也是一个很棘手的问题。设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站,而很不幸的是,我们所使用的一些自动化测试工具也包含在内。聊一聊最好用的接口方法。
接口法思路:
& &不管短信验证码、图形验证码还是邮件验证,都需要都auth中去认证。(auth与会员进行分离,auth只负责认证)。那么在auth中提供一些后面借口就可以进行自动化测试了。
& 如根据手机号插入一个新的短信校验,但安全问题就比较突出了,我想到的解决方式有: ip地址限定+用户名/密码认证+证书。
附录是一篇验证码方面的文章:(http://blog.csdn.net/snakeshiy/article/details/7460255)可以参考一下
图片验证码(Captcha)问题在自动化测试中是一个很常见的问题,也是一个很棘手的问题。图片验证码设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站,而很不幸的是,我们所使用的一些自动化测试工具也包含在内。当然了,对付验证码也不是一点办法都没有,方法还是有很多的,只是我们需要跳出技术层面去思考问题。废话少说,先来看下几种常见的解决办法:
1. 识别法(技术)
& & & & 识别法就是对验证码的图片进行字符识别,其原理就是通过识别算法解析图片,其解析的精准度取决于图片的复杂程度。
& & & & 熟悉QTP的同学应该都知道,在做文本检查点和文本区域检查点的时候会用到一种叫OCR识别的技术,OCR的全称是Optical Character Recognition,中文叫光学字符识别。OCR指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。
& & & &&根据本人经验,如果图片中的字符方方正正的并且图片背景比较单调的话,那么OCR识别率会非常高。比如类似于以下这种验证码的图片可以被OCR识别出来:
& & & & &但是对于一些复杂的图片:字体歪歪扭扭、字体颜色和图片背景很花哨、有故意干扰的曲直线、甚至包括计算等等,如果碰到这种情况,那么OCR识别率将非常低甚至无能为力,比如:
& & & & & & & & & & & & & & &&新浪微博注册页面的验证图片
& & & & & & & & & & & & & & &淘宝注册页面的验证图片
& & & & & & & & & & & & & & & & & & & & &神级的验证图片。。。
& & & &&我们可以看到,通过OCR这种技术来识别验证码图片中的字符不失为一种好的方法,但是它也有很多局限性,只适用于一些简单的图片。如果你的项目中的验证图片很复杂,果断放弃这种方法吧。
2. 接口法(技术)
& & & &&接口法就是让开发人员提供一个测试接口,通过这个接口可以获取到图片验证码。这种方法的具体实现又可以有很多种,比如在服务端提供一个可被客户端使用的接口,只要客户端传递过来自己的SessionID,该接口就返回此时正确的Session,这种方法就可以很容易地让自动测试工具直接获取到正确的应该提交的验证码内容;或者在网页中隐藏一个验证码内容的标签,通过读取这个网页标签内的值就可以轻松获取到验证码内容。
& &&增加了获取验证码的接口,势必会增加非常大的安全风险,所以这种方法只适合在测试环境使用。
3.移除法(非技术)
& &&所谓移除法非常简单,就是把图片验证码的功能去掉,这是最省力的一种方法,但是需要开发人员的配合和领导的同意。但是需要注意的一点是这种方法也只适合在测试环境使用,软件产品上线时需要把图片验证码功能还原,否则会有巨大的安全隐患。
4.暗号法(非技术)
& &&顾名思义,暗号法就是通过事先达成的一种秘密协议进行沟通,在这里是指让开发人员提供一个“万能验证码”,不论图片如何变化,只要输入万能验证码就能通过。但是这种方式同样会产生安全隐患,如果验证码被攻击者知道的话,所以这种方法也只适合在测试环境使用。
& & 以上是Web自动化测试中对付图片验证码问题的一些常用方法,这些方法本身都有一定优缺点和局限性,至于采取何种方式则需要结果具体的项目情况和需求进行考虑,记住,没有最好的方法,只有最适合的方法!
喜欢该文的人也喜欢请问各位股亲,深交所互动平台注册时,图形验证码应如何输入,急!谢谢_大连友谊(000679)股吧_东方财富网股吧
请问各位股亲,深交所互动平台注册时,图形验证码应如何输入,急!谢谢
请问各位股亲,深交所互动平台注册时,图形验证码应如何输入,急!谢谢
陈志祥和武信投资自从去年七月份成为实际控制人和大股东后,大连友谊多次在定期报告和深交所互动平台以及股吧平台上表述要通过资产重组和资产并购等方式加快转型,直到现在一年半的时间了也没有落实,没有实质性进展,严重误导投资者,给投资者造成了巨大的经济损失,这就是典型的忽悠式重组,属于虚假陈述!!监管部门完全应该处罚这样的公司!!小散们联合起来,积极举报,让忽悠者赔偿损失!
陈志祥和武信投资自从去年七月份成为实际控制人和大股东后,大连友谊多次在定期报告和深交所互动平台以及股吧平台上表述要通过资产重组和资产并购等方式加快转型,直到现在一年半的时间了也没有落实,没有实质性进展,严重误导投资者,给投资者造成了巨大的经济损失,这就是典型的忽悠式重组,属于虚假陈述!!监管部门完全应该处罚这样的公司!!小散们联合起来,积极举报,让忽悠者赔偿损失!
在深交所互动平台问大连友谊的这些骗子,只能是被忽悠!
在深交所互动平台问大连友谊的这些骗子,只能是被忽悠!
陈志祥和武信投资自从去年七月份成为实际控制人和大股东后,大连友谊多次在定期报告和深交所互动平台以及股吧平台上表述要通过资产重组和资产并购等方式加快转型,直到现在一年半的时间了也没有落实,没有实质性进展,严重误导投资者,给投资者造成了巨大的经济损失,这就是典型的忽悠式重组,属于虚假陈述!!监管部门完全应该处罚这样的公司!!小散们联合起来,积极举报,让忽悠者赔偿损失!
作者:您目前是匿名发表 &
作者:,欢迎留言
提示:用户在社区发表的所有资料、言论等仅代表个人观点,与本网站立场无关,不对您构成任何投资建议。用户应基于自己的独立判断,自行决定证券投资并承担相应风险。
扫一扫下载APP
东方财富产品
关注东方财富
扫一扫下载APP
关注天天基金图形验证码的破解与设计_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
图形验证码的破解与设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢当前位置 :
html5图片验证码代码
581粉丝/2关注
[声明]本站素材来自用户分享,仅限学习交流请勿用于商业用途。如损害你的权益请联系客服QQ:给予处理。
举报原因:
&&垃圾广告
&&淫秽色情
&&虚假中奖
&&敏感信息
&&人身攻击
&&骚扰他人
已发布2122
下载该资源用户也下载了
使用邮箱登录17素材
已连续签到1天,签到3天将获得积分VIP1天

我要回帖

更多关于 图形验证码总显示错误 的文章

 

随机推荐