美文网首页
破解滑动验证码

破解滑动验证码

作者: Cracks_Yi | 来源:发表于2017-11-06 20:18 被阅读0次

    最近爬虫采集数据遇到了验证码的障碍,需要破解某网站的滑动验证码(GEETEST)。

    主要参考https://segmentfault.com/q/1010000008584470,这里面实现了图片拼接(还原),识别缺口位置,还有模拟拖动。参考代码,最终破解了针对目标网站的滑动验证码。步骤如下:

    1.图片还原
    为什么有这一步呢?网站展现给我们的是完整的图片,点击滑块后图片会出现一个缺口。实际上点击前后是两张图,每个整图是一小块一小块拼起来的图,而我们能获取到的是两张小块乱序拼接在一起的图,如下:


    点击前乱序图.jpg 点击后乱序图.jpg

    所以第一步就是按小图切分后再按正确的顺序重新拼接起来,还原成我们网页上看到的图。按什么顺序呢?"检查元素"后

    before.png after.png

    2.识别缺口位置
    我们可以看到前后两张图只有两处地方不一样,一处是明显的缺口,另一处是不明显的伪缺口(以下简称干扰)。我们可以对比前后两张图,找到不一样的地方,再用一个阈值排除掉干扰即可。
    一个像素点有r,g,b三个值,我采用的衡量两个像素点差别的度量是前后图的r,g,b的差值的绝对值的加和。
    做实验,当阈值为70时,


    阈值为100时,


    直到阈值为150时,



    再也没有干扰了,缺口的部分地方也识别不出来了,但是没关系,只要用识别到的最小的x作位置即可。

    3.模拟拖动
    这个是相对麻烦的一步。最开始用各种随机,x随机y随机移动时休息时间随机,发现完全无法通过。网站后台应该用了模型去判断是否符合人的操作,所以想破解还得再还原人的操作。而人的操作对应到电脑操作就是一个记录每一步移动距离的数组。
    参考https://www.zhihu.com/question/32209043,部分提到人的拖动是先加速后减速的,利用这个思想,结合自己实验多次,发现了一些规律:
    1.人总体拖动先加速后减速
    2.两步之间移动的距离差不能过大过频繁
    3.每一步移动距离不能太大(一般2就算比较大)
    最后建立了一个先慢加速后快加速再减速的模型,以距离来确定应该用哪一个加速度,最后一段距离如果速度超过阈值,再用一个更强的减速。在整个过程中加一些低概率随机的-1。
    这种方法效果非常拟人,通过率也很高。通过率没统计过。

    相关文章

      网友评论

          本文标题:破解滑动验证码

          本文链接:https://www.haomeiwen.com/subject/jotapxtx.html