爬虫的一大难点就是破解验证码。验证码大致上分为文字识别、滑动、文字点击、图像识别等,本文讲的是其中的滑动验证码。滑动验证码,需要我们将滑块移至图片缺口位置。实际上我们可以通过对比完整图片和缺口图片各个像素点的RGB值,得出缺口位置左上角的坐标,然后构造轨迹算法使用selenium模拟移动滑块即可。
滑动验证码破解大致流程为:
1 - 获取缺口图片与原图片
2 - 图像对比,得出缺口左上角坐标
3 - 构造轨迹算法
4 - 使用selenium模拟移动滑块
本篇主要针对构造轨迹算法进行探讨。
使用工具:python,selenium,chromedriver,chrom浏览器
操作步骤讲解环节
下面就是喜闻乐见的操作步骤讲解环节了(´◔౪◔)
代码部分:
def get_track(distance):
# 轨迹
track = []
# 设置一个分隔线,之前为匀加速运动,之后为匀减速运动
mid = distance*4/5
# 用于记录当前的移动距离
current = 0
# 时间间隔
t = 0.2
# 初速度
v = 0
while current < distance:
if current < mid:
a = 2
else:
a = -3
v0 = v
v = v0 + a * t
move = v * t + 1/2 * a * t * t
current += move
# round(x)四舍五入
track.append(round(move))
return track
if __name__ == '__main__':
track = get_track(108) # 参数就是前一篇文章中得到的gap_x
print(track)
# [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3]
# 表示每0.2秒移动一小段
要点总结:
1 - 因为人类无法做到完全匀速拖到,极验会识别出匀速拖动的是程序操作,所以我们还需要构造一个轨迹移动算法。
2 - 我们构造的是一个先匀加速后匀减速的轨迹。需要用到几个简单的物理公式。
那么本次的分享就到这里了,喜欢的话麻烦点赞关注一下;不喜欢的话可以去看下小编的其他文章,肯定有喜欢的;都不喜欢的话可以点个关注,万一以后有喜欢的呢(๑•̀ㅂ•́)و✧
有疑问的小伙伴也可以在评论区留言哦,我会第一时间解答的。
你点了吗◔ ‸◔?