首页 > 其他分享 >自动化滑动极验v3示例

自动化滑动极验v3示例

时间:2024-10-31 16:59:42浏览次数:5  
标签:box random img 示例 track move 极验 v3 page

import random
import ddddocr
from playwright.sync_api import sync_playwright
import time
import requests


with sync_playwright() as p:
    det = ddddocr.DdddOcr(det=False, ocr=False)

    browser = p.chromium.launch(headless=False, args=[
        '--disable-blink-features=AutomationControlled',
        '--disable-infobars',
        '--disable-web-security',
        '--disable-features=IsolateOrigins,site-per-process'
    ])
    context = browser.new_context(
        user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
        viewport={'width': 1280, 'height': 800}
    )
    page = context.new_page()

    # 打开网页
    page.goto("https://www.zhihu.com/")

    # 找到手机输入位置并输入手机号
    page.fill('//*[@name="username"]', "18888888888")
    time.sleep(1)

    # 找到按钮并点击
    page.click('//*[contains(@class, "CountingDownButton")]')

    # 等待弹窗出现
    time.sleep(3)

    # 获取滑块和背景图片的元素
    bg_img_src = page.get_attribute('//*[@class="yidun_bg-img"]', "src")
    jigsaw_img_src = page.get_attribute('//*[@class="yidun_jigsaw"]', "src")

    # 下载图片
    bg_img_data = requests.get(bg_img_src).content
    jigsaw_img_data = requests.get(jigsaw_img_src).content

    with open("full.jpg", "wb") as f:
        f.write(bg_img_data)

    with open("part.png", "wb") as f:
        f.write(jigsaw_img_data)

    # 重新读取图片并计算滑块需要移动的距离
    with open("part.png", "rb") as f:
        target_bytes = f.read()

    with open("full.jpg", "rb") as f:
        background_bytes = f.read()

    res = det.slide_match(target_bytes, background_bytes)
    distance = res["target"][0] + 8
    print(f"滑块需要移动的距离为 {distance} 像素。")

    # 找到滑块并模拟拖动
    slider = page.locator('//*[@class="yidun_slider__icon"]')
    box = slider.bounding_box()

    # 计算滑动轨迹
    def human_like_track(distance):
        track = []
        current = 0
        mid = distance * 3 / 4
        t = 0.2
        v = 0

        while current < distance:
            if current < mid:
                a = random.uniform(2, 3)
            else:
                a = -random.uniform(2, 4)
            v0 = v
            v = v0 + a * t
            move = v0 * t + 0.5 * a * (t ** 2)
            current += move
            track.append(round(move))
        
        # 模拟拉扯动作
        over_shoot = random.randint(10, 15)  # 过头的距离稍微大一点
        track.append(over_shoot)
        track.append(-over_shoot + random.randint(1, 3))
        
        return track

    track = human_like_track(distance)

    # 模拟拖动滑块
    page.mouse.move(box["x"] + box["width"] / 2, box["y"] + box["height"] / 2)
    page.mouse.down()
    current_x = box["x"] + box["width"] / 2
    for move in track:
        current_x += move
        page.mouse.move(current_x, box["y"] + box["height"] / 2)
        if move < 0:  # 拉回来的时候速度稍微慢一点
            time.sleep(random.uniform(0.05, 0.1))
        else:  # 往左的时候速度稍微快一点
            time.sleep(random.uniform(0.01, 0.02))
    page.mouse.up()

    time.sleep(20)
    # 关闭浏览器
    browser.close()

标签:box,random,img,示例,track,move,极验,v3,page
From: https://www.cnblogs.com/miaokela/p/18518330

相关文章

  • 如何用pbootcmsAPI接口开发微信小程序UNIAPP示例
    1.准备工作在开始开发小程序之前,你需要:搭建好PbootCMS环境,确保其正常运行。注册小程序并获取AppID和AppSecret。配置PbootCMS与小程序的接口。2.封装API//获取站点信息exportconstpostSite=(config={})=>http.post('/cms/site',config)//获取自定义标签ex......
  • uniapp - 详细实现移动端公众号 H5 网页授权登录流程及示例代码,申请测试公众号全流程
    前言Vue版本,请访问这篇文章。在uni-appH5网站平台开发中,详解微信公众号网页接入微信授权登录示例代码,附带申请测试公众号全流程及配置教程,提供前端h5页面公众号网页实现授权登陆并获取用户昵称头像数据的示例源码,用自己项目跑出来的本地局域网IP段就可以拉起公众......
  • Java - 文字识别 ;示例代码基于SpringAI和国产大模型
    文字识别在Java开发中的应用在Java开发中,将图像中的文字进行识别能力被广泛应用于多种场景,比如自动审核图片内容、商品搜索分析等。过去,这类需求主要通过OCR(光学字符识别)技术来实现,但其对于复杂图像的处理效果往往不尽人意。如今,随着大模型技术的发展,利用这些先进的AI模型......
  • RCountDownLatch 分布式计数器锁的使用示例
    RCountDownLatch是Redisson提供的一种分布式计数器锁,类似于Java的CountDownLatch。它允许一个或多个线程等待其他操作完成后再执行,适用于分布式环境中需要协调多任务的场景。以下示例设计来自ChatGPT。1.示例场景假设有5个任务,主线程需要等这5个任务全部完成后再继......
  • Redisson 使用示例
    Redisson是一个Java的Redis客户端,基于Redis实现了许多分布式数据结构和功能,例如分布式锁、缓存、限流器、布隆过滤器等。以下是一些常见的Redisson使用示例,来自ChatGPT,用于自学。Redisson提供了 RLock 接口用于实现分布式锁,适用于需要同步访问共享资源的分布式应用......
  • 表格转文字如何实现-表格文字识别接口集成示例-快速提取表格中的文字​
    在当今信息化与智能化日新月异的时代,企业和组织面临着海量数据的处理需求,特别是在金融、法律、教育等领域,复杂而繁琐的表格数据成为一种重要的信息来源。如何快速、准确地提取表格中的文字信息,提升数据处理效率,成为越来越多企业关注的焦点。随着OCR(光学字符识别)技术的迅速发展......
  • 表格转文字如何实现-表格文字识别接口集成示例-快速提取表格中的文字​
    在当今信息化与智能化日新月异的时代,企业和组织面临着海量数据的处理需求,特别是在金融、法律、教育等领域,复杂而繁琐的表格数据成为一种重要的信息来源。如何快速、准确地提取表格中的文字信息,提升数据处理效率,成为越来越多企业关注的焦点。随着OCR(光学字符识别)技术的迅速......
  • JSON文件转YOLO文件示例
    文章目录前言一、步骤指南二、代码实现1.类别名称到ID的映射2.边界框转换函数3.JSON解码函数4.主程序前言将JSON标注文件转换为YOLO格式通常涉及从JSON文件中提取图像尺寸、对象类别和边界框坐标,并将这些信息格式化为YOLO格式所需的格式。YOLO格式通常要求每行包含......
  • loki: 安装配置Loki v3.2.1
    一,Loki是什么?1,Loki是Grafana团队开源的一款高可用、高拓展、多租户的日志聚合系统,和ELK的组件功能一样,Loki有负责日志存储查询的主服务,有在客户端负责收集日志并推送的代理服务,还有Grafana最拿手的可视化面板展示。2,官方网站https://grafana.com/oss/loki/下载地址......
  • 机票电子行程单如何批量查验?Java机票电子行程单查验接口示例
    机票电子行程单来了,它方便了人们的出行。现如今,随着旅游、差旅市场的回暖与线上业务的蓬勃发展,机票电子行程单的需求量急剧攀升,如何高效且准确地查验这些电子行程单成为许多企业和财务部门关注的焦点。传统的人工查验流程耗时且易出错,尤其在行程单数量巨大的情况下,费时费力。......