当前位置:首页 > 资讯 > 正文

验证码破解:极验3.0滑动验证码

验证码破解:极验3.0滑动验证码

 

特点: 对于极验验证码3.0版本,我们首先点击按钮进行智能验证。如果验证不通过,则会弹出滑动的验证的窗口,拖动滑块拼合图像进行验证。之后三个加密参数会生成,通过表单提交到后台,后台还会进行一次验证。

极滑2.0的破解思路:

  1. 模拟点击验证按钮 直接用Selenium模拟点击按钮
  2. 识别滑动缺口的位置 利用原图和缺口图对比检测方式来识别缺口的位置,通过遍历俩张图片,找出相同位置像素RGB差距超过此阀值的像素点,那么此像素点的位置就是缺口的位置。
  3. 模拟拖动滑块 模拟人的移动轨迹通过验证,一般是先加速后减速。

破解的重要点就是:识别滑动缺口的位置。 但是极滑3.0进行了更新,我们点击按钮进行智能验证,然后截图,但是获取到的不再是完整的原图,而是带有缺口的原图,这样子,我们就不能使用极滑2.0的办法来获取到滑动缺口的位置,需要另想获取滑动缺口的位置,下面有分别俩个办法来获取极滑3.0的缺口位置:


方法一、通过超级鹰平台(本博客将以该方法为测试案例)

  1. 通过超级鹰验证码破解平台,我们先截图获取带有缺口的验证码图片,然后再在图片上加上”请点击凹槽左上交“ 这几个打字,然后通过接口发送超级鹰验证平台,他们就会返回给我们凹槽的左上角位置获取得到的验证码:需要添加上”请点击凹槽左上角“,超级鹰才能知道是识别滑动缺口图片的凹槽位置超级鹰返回的结果为字典类型,其中键"pic_str"的值为结果坐标(60, 52):图片凹槽的左上角的真实位置为(58,53):

方法二、不断截图

通过滑动小块按钮,从左边到右边,然后不断保存滑动过的轨迹和截图到的照片到字典中,通过照片分析,找到其中没有凹槽的图片,也就是将滑块移动到符合位置的轨迹,至于怎么在那么多截图中找到最合适的那种找完美的图片,这个就需要图片处理的算法,这个下次再弄,这次尝试了方法一。


chaojiying.py: 需要使用到超级鹰平台,读者可以看我上一篇博客,有讲到如何注册使用,在geetest_spider.py中需要用到超级鹰的账号、密码、软件ID,这个模块就无要更改

geetest_spider.py:需要修改CrackGeetest类中的get_gap()方法中的超级鹰账号、密码以及软件ID

测试数据:

次数验证何时通过(每次刷新尝试最多3次机会)1第1次刷新,第1次尝试,验证通过2第2次刷新,第3次尝试,验证通过3第1次刷新,第2次尝试,验证通过4第1次刷新,第1次尝试,验证通过5第8次刷新,第1次尝试,验证通过过6第1次刷新,第3次尝试,验证通过

该验证的通过率,取决于超级鹰平台的返回的坐标,不过从结果可以看出来,基本都是要识别好几次,才可以成功,这个算法有点不行,可以通过celery异步让他处理,结果会更好,如果有机会,还不如自己写个识别图片凹槽的算法,感觉不会特别难