优主张 2018-05-09
前段写了一个破解极验滑动验证码的程序,事后发现网上的教程给出的方法全都非常复杂,一写就是一个系列。而我写的程序全加起来连100行都不到,所以我想还是有必要和大家分享一下的。
试图破解过极验验证码的人都知道破解滑块验证码最核心的主要有两件事:首先是识别缺口所在位置,第二点是对抗行为轨迹识别。所以本文主要围绕这两点来分析。
为了保证安全性&节省工作量,程序使用的是按键精灵&易语言搭配使用的方式进行识别的。就是易语言负责截屏和识别缺口位置,通过剪切板把位置信息传递给按键精灵,按键精灵负责控制鼠标模拟人类滑动过程。
遇到这个问题的时候,我的第一反应就是用机器学习识别,并且有知乎网友用了这个方法。但稍微仔细想一下就会发现其实只要对比两张图的某一个像素灰度有没有差别很大就可以了,15行代码就能搞定
按照极验官网的介绍:“验证的过程中会收集用户拖动滑块的行为轨迹和用户设备信息等多维度信息,实时分析这些信息来进行人机识别。”
如果拖拽过程中的行为轨迹未能通过人机识别验证,即便正确拖拽到缺口也不能通过验证,并弹出小怪兽。
交流学习!大神答疑解惑!资源更享群:125240963
不过以实际测试结果来看,极验滑动验证码的行为人机识别能力还是比较差的。只要拖拽时速度别太匀速,有一些明显的变化,并且鼠标的纵坐标有轻微的移动就能通过验证。对模拟程度方面的要求还是比较低的。
从代码中可以看出,其实就是循环循环比较图像[1]和图像[2]的颜色灰度没有没相差超过100。
其实截图和识别缺口的代码用按键精灵就能写,而且用按键精灵来写代码量会更小。但是按键精灵需要装大漠模块,并且大漠模块安全性未知,所以只好出此下策。
按照极验官网的介绍:“验证的过程中会收集用户拖动滑块的行为轨迹和用户设备信息等多维度信息,实时分析这些信息来进行人机识别。”
如果拖拽过程中的行为轨迹未能通过人机识别验证,即便正确拖拽到缺口也不能通过验证,并弹出小怪兽。
不过以实际测试结果来看,极验滑动验证码的行为人机识别能力还是比较差的。只要拖拽时速度别太匀速,有一些明显的变化,并且鼠标的纵坐标有轻微的移动就能通过验证。对模拟程度方面的要求还是比较低的。
'按住圆形滑块
MoveTo850,616
Delay500
LeftDown1
Delay50
a=Plugin.Sys.GetCLB()'获取剪切板文本
a=a+取随机数(-5,5)'人为的制造一些误差
'先快速移动50px,走完50px的误差
For25
IfLib.算法.随机数字串(1)=0Then'十分之一的概率触发纵坐标移动
纵移距离=取随机数(1,2)
Else
纵移距离=0
EndIf
MoveR2,纵移距离'相对移动鼠标位置,横向移动2像素,纵向移动变量内的数值
Delay取随机数(10,50)'随机等待
Next
'按照最慢速度走完所有像素。代码内容与上方代码相同,只是参数不同,速度更慢
Fora
IfLib.算法.随机数字串(1)=0Then
纵移距离=取随机数(1,2)'
Else
纵移距离=0
EndIf
MoveR1,纵移距离'
Delay取随机数(3,50)
Next
'放开鼠标
Delay500
LeftUp1
Delay30
LeftUp1
'结束
至此,破解程序的主要代码就介绍完了。加上其他的辅助代码就能正常运行了。其他代码可以从我给出的链接下载。
源码下载地址:https://www.xinsheji.org/picture/verification_code.zip
验证安全2.0时代:极验验证码评测http://www.freebuf.com/articles/others-articles/116331.html
一个函数破解Geetest滑动验证码http://www.freebuf.com/articles/web/140693.html
极验验证可以被破解吗?https://www.zhihu.com/question/28833985
极验滑动验证最新破解实践(18年1月底)https://zhuanlan.zhihu.com/p/31995134
*本文原创作者:ynefen