python selenium破解极验3滑动验证码

本文探讨了两种尝试破解极验3滑动验证码的方法。首先介绍了一种基于物理加速度公式的算法,但由于易被识别已被淘汰。接着,提出了一种利用轨迹离散分布生成的算法,该方法成功率高,适用于破解当前版本的滑动验证码。
摘要由CSDN通过智能技术生成

python selenium破解极验3滑动验证码,解决物理公式不可用的问题

一、采用物理加速度公式算法

def get_track(self, distance):
    """
    获取滑块移动轨迹的列表
    :param distance: 第二个缺块的左侧的x坐标
    :return: 滑块移动轨迹列表
    """
    track = []
    current = 2
    mid = distance * 1 / 2
    mid0 = distance * 1 / 4
    mid1 = distance * 1 / 8
    t = 0.2
    v = 50
    distance += 10  # 使滑块划过目标地点, 然后回退
    while current < (distance - 10):
        if current < mid1:
            a = random.randint(4, 10)
        elif current < mid0:
            a = -random.randint(6, 8)
        elif current < mid:
            a = random.randint(4, 10)
        v0 = v
        v = v0 + a * t
        s = v0 * t + 0.5 * a * t * t
        current += s
        a = -random.randint(6, 7)
        track.append(round(s))

    for i in range(2):
        track.append(-random.randint(2, 3))
    for i in range(2):
        track.append(-random.randint(1, 4))

    return track

注意此方法已经不可用,会被识别出来,结果会显示图片被怪物吃掉了。

二、采用轨迹离散分布生成的算法

# 轨迹公式,也可采用其他公式
def ease_out_quart(self, x):
    return 1 - pow(1 - x, 4)

def get_tracks_2(self, distance, seconds, ease_func):
    """
    根据轨迹离散分布生成的数学 生成  
    成功率很高 90% 往上
    :param distance: 缺口位置
    :param seconds:  时间
    :param ease_func: 生成函数
    :return: 轨迹数组
    """
    distance += 20
    tracks = [0]
    offsets = [0]
    for t in np.arange(0.0, seconds, 0.1):
        ease = ease_func
        offset = round(ease(t / seconds) * distance)
        tracks.append(offset - offsets[-1])
        offsets.append(offset)
    tracks.extend([-3, -2, -3, -2, -2, -2, -2, -1, -0, -1, -1, -1, -1, -2, -1]) #可以自己按情况改
    return tracks

这种方法成功率很高,破解极验3滑动验证码没什么问题。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值