爬虫之极验验证码破解-滑动拼图验证码破解

前言

滑动验证码已经流行很多年了,我们在这里尝试一下如何实现滑动拼图验证码的自动化拖动。
这是某网站的注册页面,点击拖动按钮后会出现豁口滑动。
在这里插入图片描述

步骤分析

大致流程就是使用webdriver此页面后,获取到原图以及有豁口的图,拿这两个图进行对比,找到豁口部分的左侧坐标,根据这个坐标进行滑动验证即可。

第一步,获取原图

鼠标放到图片上,右键检查元素即可发现该图片是以精灵图的形式展现出来的,而且原图是由多个小图片打乱顺序后拼接而成,审查元素可以看到小图片在混乱大图中的坐标点,我们要做的就是根据此坐标点和图片大小对图片进行拼接,使其呈现出与web页面中图片一样的图片。
在这里插入图片描述
在这里插入图片描述
该页面返回了两张图片,一个是完整图一个是豁口图,我们要根据这两个标签,去匹配出对应的小图座标点以及大图的url
在这里插入图片描述
代码如下:
在这里插入图片描述
得到如下格式的数据
在这里插入图片描述

第二步 拼接图片

坑点:该图片在网页中显示是312X116的,但是拼接之后有很多乱乱的线条,后来发现在web中,其大小为260X116。
思路:向该图片url发送请求获取混乱大图,使用pillow模块,创建一张空的图片,遍历上一步得到的坐标点,然后根据此坐标点和图片大小(10X58)从响应大图中copy出这个位置的图片,再将此图片粘贴到空图中,遍历过程中注意粘贴时所指定的坐标点,(该图片共分为52张小图片),前26张纵坐标为0,后20张纵坐标为58,横坐标要根据当前在此行中是第几个进行计算。
代码如下:
在这里插入图片描述
运行效果:
在这里插入图片描述
到此,已经可以获得正常顺序的图片了。

第三步 计算豁口所在位置

在这里插入图片描述
对比两张图片,豁口部分明显暗于正常的图片,我们可以通过像素值进行判断。
三个像素点的对应的值之差都大于50即认定是该点为豁口左上角。
在这里插入图片描述

第四步 计算拖动距离

设豁口左上角x轴坐标为X,
为了能让滑块与豁口重合,大概要移动X-10的距离。
在这里插入图片描述

模拟拖动

使用selenium模拟拖动即可

其他

其实还有很多没解决的问题,譬如验证码后端会对你的拖动轨迹进行判断,很有规律的拖动很容易被检测到为机器,从而导致拖动失败。
其次还有webdriver特征值检测。
本人使用pyppeteer进行模拟拖动,可以通过异步执行js修改webdriver特征值,但是还没有解决拖动这个问题,Pyppeteer提供的拖动方法貌似有bug,短距离拖动无法进行。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值