吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1188|回复: 5
收起左侧

[Python 转载] DrissionPage过某验滑块

[复制链接]
weiback 发表于 2024-7-22 22:46
本帖最后由 weiback 于 2024-7-22 22:53 编辑

如果此文和其他作者发布有重复,或者有其他侵权问题,请留言,将会删除此文,谢谢。DrissionPage过滑块流程:
1.首先需要先打开滑块所在网站,这里用的是atob('aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s')
page = ChromiumPage()
page.get(atob('aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s'))
2.点击触发滑块按钮,获取滑块图片
这里需要注意的是,该网站的滑块图片不能在html页面获取,所以这里需要采用DrissionPage的监听功能来捕获返回的滑块数据信息
page.listen.start(atob('YXBpLmdlZXZpc2l0LmNvbQ=='))
page.ele('.geetest_radar_tip_content').click()
res = page.listen.wait(count=2, timeout=3)
3.由2获取得到的滑块图片是乱序的,需要进行还原,还原的代码已经有很多人分享过了,这里不再赘述。
4.获取到滑块原图之后即可对滑块所在位置进行定位,这里选用的是ddddocr来进行获取滑块距离
det = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False)
slide = open('./img/slice_img.jpg', 'rb').read()
bg = open('./img/bg_img.jpg', 'rb').read()
distance = det.slide_match(slide, bg, simple_target=True)['target'][0]
5.滑块距离得到后,要根据他的距离来设计出滑块的移动轨迹,js逆向的话会需要考虑x,y和时间的值;这里只需要考虑x(即水平方向)的移动速度即可
这里用的是在网上看到的一个缓动函数,用来模拟人的行为来进行生成轨迹。
缓动函数:
def ease_out_expo(sep)
    if sep == 1:
        return 1
    else:
        return 1 - pow(2, -10 * sep)
这里需要注意的是,缓动函数生成的轨迹是逐渐增大的,如果是js逆向的话直接使用即可,如果是自动化需要依次用后一个值减去前一个值,否则移动距离和实际滑块位置不符。  
获取移动轨迹:
def get_tracks(distance):
    plus = []
    # 记录count次滑块位置信息
    count = int(distance / 4)
    for i in range(count):
        s = round(__ease_out_expo(i / count) * distance)
        plus.append(round(s))
    return plus
6.获得滑块轨迹之后即可滑块进行移动
     page.actions.hold('.geetest_slider_button')
    # 获取轨迹
    index = 0
    for x in get_tracks(distance)[:-5]:
        if index == 0:
            page.actions.move(offset_x=x, duration=.1)
        else:
            page.actions.move(offset_x=x - get_tracks(distance)[index - 1], duration=.1)
        index += 1
    page.actions.release('.geetest_slider_button')
7.检查是否成功
    result = page.listen.wait(count=1, timeout=3)
    print(result.response.body)
如果返回类似geetest_1721656914244({"success": 1, "message": "success", "valIDAte": "0fc57cff06c02cbfd9d5dead5acaa3c8", "score": "9"}),则代表成功。

注意:轨迹有待优化,测试的时候是可以成功的,但不同电脑上运行是否成功可能有一定的差别。

免费评分

参与人数 1吾爱币 +1 收起 理由
wobuaipojie7 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xjr741238569 发表于 2024-7-23 17:24
qinshushuaiqi 发表于 2024-7-23 16:04
算法过滑块跟这个是一样的吗?哪个的速度快一点啊

肯定算法,算法可以多线程
 楼主| weiback 发表于 2024-7-23 19:36
qinshushuaiqi 发表于 2024-7-23 16:04
算法过滑块跟这个是一样的吗?哪个的速度快一点啊

你这里的算法如果是指js逆向的话,肯定是js逆向速度更快。如果是自动化的算法速度,这里面就是用的缓动函数来生成的轨迹,但是生成的轨迹里面有很多重复的,可以删除一些来增加移动的速度,或者在使用dp时将移动滑块的速度设置为0,都是可以的。其他的可能也有方法,但我暂时还没了解到
1783780690 发表于 2024-7-25 18:17
zh648990 发表于 2024-11-5 14:52
谢谢分享 正在找这个功能的代码呢 感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 00:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表