利用 canvas 破解 某拖动验证码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了利用 canvas 破解 某拖动验证码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1503字,纯文字阅读大概需要3分钟。
内容图文
案例: https://www.capy.me/products/ whois 查询发现应该是一个日本公司出的。
测试:尼玛,点来点去原来就4张图片来来回回切换,专业点好不好......
Part 1 识别
读取原图: 随便多刷新几次,读两张图片,用 PS 补成原图。
对比图片:利用canvas的特性 getImageData 读取像素,然后和你想要识别的图片对比,找出被挖出去的部分。
计算补全: 然后就简单啦,计算好被挖出部分在x 和 y 方向的偏移量,然后把 小图移动过去,OK 搞定。。。
代码示例: 看runjs: http://sandbox.runjs.cn/show/gfeesnxw (代码写的乱,大家将就着看看 --..)
Patr 2 模拟
页面模拟:除了知道怎么识别图片位置,还需要知道怎么在页面模拟鼠标拖动操作,将图片移动到合适的位置。
在页面拖动一个元素,差不多看成是3个事件的组合:mousedown,mousemove,mouseup。
那么首先需要创建事件,定义好一个差不多的函数吧:
function createEvent(eventName, ofsx, ofsy) { var evt = document.createEvent(‘MouseEvents‘); evt.initMouseEvent( eventName , true , false , null , 0 , 0 , 0 , ofsx, ofsy, false, false , false, false, 0, null ); return evt; }
var idPrefix = $("div.capy-captcha").attr("id").substring(0, 8); var obj = document.getElementById(idPrefix+"pieces").childNodes[1]; var box = document.getElementById(idPrefix+"capy"); var boxRect = box.getBoundingClientRect(); var move = createEvent(‘mousemove‘, boxRect.left + obj.offsetLeft + 10, boxRect.top + obj.offsetTop - 10), down = createEvent(‘mousedown‘, boxRect.left + obj.offsetLeft, boxRect.top + obj.offsetTop), up = createEvent(‘mouseup‘); obj.dispatchEvent(down); document.dispatchEvent(move); obj.dispatchEvent(up);
上面这段代码不是通用的,只是一个例子,可以去这里 https://www.capy.me/account/signup 用浏览器控制台输入代码测试。代码中的数字 10 就是移动的 像素,自行按需修改哦~
好了,这样就能写个程序自动注册帐号了,呵呵....
后话:这里还有个 http://geetest.com/tryit/ 叫极验的, 大致看了下,感觉也是类似的, 没有破解的需求,我就不伤脑筋去研究了。
原文:http://my.oschina.net/u/237940/blog/337194
内容总结
以上是互联网集市为您收集整理的利用 canvas 破解 某拖动验证码全部内容,希望文章能够帮你解决利用 canvas 破解 某拖动验证码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。