What?废柴, 模拟登陆,代码控制滑动验证真的很难吗?Are you kidding???
1.简介
在前边的python接口自动化的时候,我们由于博客园的登录机制的改变,没有用博客园的登录测试接口。那么博客园现在变成了滑动验证登录,而且现在绝大多数的登录都变成这种滑动验证和验证码的登录验证机制。我们真的没有其他办法解决这种验证机制的登录了吗?真的是束手无策了吗?答案是:NO,今天宏哥教你如何用代码来模拟鼠标滑动,最终验证成功后,最后成功登录。那么怎么做了,思路了???
2.我们首先理解滑动验证的原理
滑动验证难点
1.电脑如何自动点击滑动块
2.电脑如何检测 缺口位置(如图;)
3.解决这两个问题方法
- 如何自动点击滑动块,也就是图中的左下方圈起来的位置,我们可以使用selenium
- 怎么计算缺口的位置,我们可以通过PIL库的image
4.博客园登录
既然有了解决方法,我们看一下博客园的登录思路:
(1)首先我们需要打开登录页面,并输入用户名和密码,点击登录按钮,弹出验证码图片;(这个比较简单也容易实现)
(2)其次我们需要获取2张验证码图片,带缺口和不带缺口;
(3)最后我们需要获取缺口位置。遍历带缺口的图片和不带缺口的图片的每个像素,利用 is_pixel_equal() 方法判断两张图片同一位置的像素是否相同。比较两张图 RGB 的绝对值是否均小于定义的阈值 thresold。如果绝对值均在阈值之内,则代表像素点相同,继续遍历。否则代表不相同的像素点,就是缺口的位置。
通过对比两张图片可以发现,两张图片有两处明显不同的地方:一个是待拼合的滑块,一个是缺口。滑块的位置会出现在左边位置,缺口会出现在与滑块同一水平线的位置,所以缺口一般会在滑块的右侧。如果要寻找缺口,直接从滑块右侧寻找即可。这里直接设置遍历的起始横坐标为60,也就是从滑块的右侧开始识别,这样识别出的结果就是缺口的位置。
下图就是用来说明如何对比图片:
思路我们清楚了,那我们就开始撸代码吧。
4.1代码实现:
4.2参考代码:
# coding=utf-8