亚洲国产精品乱码一区二区,美景房屋2免费观看,哎呀哎呀在线观看视频高清国语,从镜子里看我是怎么C哭你

Article / 文章中心

極驗第四代滑塊驗證碼破解(三):滑塊軌跡構造

發(fā)布時間:2022-06-17 點擊數(shù):5765

一、極驗滑動軌跡分析

想構造一個成功率高的滑動軌跡,首先得知道js代碼中是如何記錄滑動過程,不同廠家的記錄方式不同。但是,萬變不離其宗,記錄的過程無非就是通過觸發(fā)鼠標的點擊、移動等事件,記錄時間、位置等信息。

 

1. 生成滑動軌跡的js入口

 

破解極驗最終的目的就是構造w參數(shù),而w參數(shù)是由滑動軌跡通過加密算法得到的。所以,可以先找到w參數(shù)的位置,通過w參數(shù)跳到滑動軌跡加密之前的位置。

 

第一步:將混淆的js代碼還原,還原過程請看 極驗第四代滑塊驗證碼破解(一):AST還原混淆JS

 

第二步:使用reres插件將gcaptcha4.js替換成還原后的js文件

 

第三步:在gcaptcha4.js中搜索"w",適當位置打上debugger

 

第四步:打開 極驗4代官方測試網(wǎng)站 ,滑動滑塊觸發(fā)debugger

 

第五步:通過調用棧找到 B F F C 函 數(shù) 中 調 用 _BFFC函數(shù)中調用

 

  • 第六步:多滑動幾次,觀察滑動軌跡規(guī)律,便于自己構造

  • 最后:這里我要吐槽下了,極驗的研發(fā)太不上心了,看看下面的圖片就知道了

 

2. 滑動軌跡的python實現(xiàn)

此方式構造的滑動軌跡,成功率在95%左右,其中各項參數(shù)還可以優(yōu)化。
優(yōu)化方案:滑動的距離在0-222范圍內,可能性不大。每次可保存校驗成功的軌跡。下次遇到相同距離時,可直接調用。

# -*- coding: utf-8 -*-
import random


def __ease_out_expo(x):
    if x == 1:
        return 1
    else:
        return 1 - pow(2, -10 * x)


def __ease_out_quart(x):
    return 1 - pow(1 - x, 4)


def get_slide_track(distance):
    """
    根據(jù)滑動距離生成滑動軌跡
    :param distance: 需要滑動的距離
    :return: 滑動軌跡<type 'list'>: [[x,y,t], ...]
        x: 已滑動的橫向距離
        y: 已滑動的縱向距離, 除起點外, 均為0
        t: 滑動過程消耗的時間, 單位: 毫秒
    """

    if not isinstance(distance, int) or distance < 0:
        raise ValueError(f"distance類型必須是大于等于0的整數(shù): distance: {distance}, type: {type(distance)}")
    # 初始化軌跡列表
    slide_track = [
        [random.randint(20, 60), random.randint(10, 40), 0]
    ]
    # 共記錄count次滑塊位置信息
    count = 30 + int(distance / 2)
    # 初始化滑動時間
    t = random.randint(50, 100)
    # 記錄上一次滑動的距離
    _x = 0
    _y = 0
    for i in range(count):
        # 已滑動的橫向距離
        x = round(__ease_out_expo(i / count) * distance)
        # 滑動過程消耗的時間
        t = random.randint(10, 20)
        if x == _x:
            continue
        slide_track.append([x - _x, _y, t])
        _x = x
    slide_track.append([0, 0, random.randint(200, 300)])
    return slide_track


if __name__ == '__main__':
    for _ in get_slide_track(100):
        print(_)