滑动验证码的破解(一)、原理介绍

最近有小伙伴和我讨论了验证码破解识别的话题,希望我帮忙实现一个滑动验证码破解识别的原型。今天我们就来聊聊这个话题。
验证码的破解是一个很有趣的话题,破解的而方式也有很多。譬如最机械的使用人工点击,亦或是相关的视觉处理算法,甚至是近年来很火热的机器学习等等。近年来,随着识别的技术提高,相应的验证码制造识别的难度也在提高,表现出越来越智能化。
下面我们直接进入主题,谈一谈今天的主角滑动验证码的破解。首先,我们来看一下,滑动验证码长啥样,我随便上网找了个图片。


再来看一张

我们可以看到大概是这样的,页面上有一张图片,图片右侧有两个随机的几何图形的阴影图片,图片左侧有一个目标几何图形。图片下方是一个滑块。
具体验证逻辑是这样的

    拖动下方滑块;
    上方的几何图形会跟着滑块移动;
    移动上方的几何图形,直到几何图形达到右侧相似阴影;
    识别完成。

有的小伙伴可能觉得我讲这个很啰嗦,这么简单的逻辑谁不知道。我为什么要介绍这个呢?后文的破解识别和这个有很大的关系,俗话说知己知彼,百战不殆。
言归正传,我们究竟应该如何做呢?我们想要破解识别出结果,必须要解决两个问题

    1.找出图中相同几何阴影图片的位置。
    2.计算出目标几何图片滑块和相同几何阴影图片的位置距离。

我们带着问题去寻找答案,似乎就不在那么困难了。
通过上面的分析,我们会发现一些有趣现象。

    1.图中几何阴影的识别不就转换成了图片识别问题了吗?
    2.位置识别我也许不是很好计算,我们可以换一个思路,上面的分析我们知道目标滑块和拖动滑块是同进退的,我们只要在上一步的基础上计算下方出滑块和相同几何阴影图片的位置距离,问题不就迎刃而解了吗?

有了上面的数据,我们就可以通过计算出图片在整个屏幕的相对位置,计算出最终的滑动距离。接下来问题就好办多了,八仙过海,各显神通。
我的小伙伴告诉我,它使用的是Selenium来实现的。记得我以前使用过Appium来实现过APP端的自动化的测试,他和Selenium的原理一样。我们只要写几行代码驱动Appium,那么从PC到移动端,所有的场景都能完美解决,理论上讲所有的技术障碍我们都已经扫清了。
当然这里也有一些问题,比如说Selenium如何模拟人类的滑动操作,模仿出一个变速抖动运动轨迹等等问题,这些本文不做讨论。我们只关心滑动验证码本身问题。回过头来,我们继续聚焦初始问题,实现图片的识别和距离计算。到底需要怎么做呢?下一节,我们将通过撸代码的方式为大家做具体的剖析。

发表评论

邮箱地址不会被公开。 必填项已用*标注