全程监听随机验证码滑块出现处理-适用于win和web通用不卡死方案
评论
收藏

全程监听随机验证码滑块出现处理-适用于win和web通用不卡死方案

经验分享
【耐家军】DC
2025-07-27 23:54·浏览量:2454
【耐家军】DC
影刀专家
影刀认证工程师
发布于 2025-07-27 23:51更新于 2025-07-27 23:542454浏览

痛点:win端没有监听验证码指令,并发调用主流程会跟着运行。参考大佬 影刀RPA过随机验证码 并发子流程暂停另一个子流程 并发暂停与恢复 ,web端可行,win端出现卡死现象

思路:

使用线程同步机制

借助 threading.Event 或者 threading.Lock 这类同步原语,能实现主线程的暂停与恢复。

将滑块检测和阻塞操作放到独立线程中,避免影响主线程。

代码

import sys
import time
from xbot import print, sleep
import xbot
import threading
from datetime import datetime
from .package import variables as glv
from .import process4  #处理滑块流程加入线程处理
from .import process7 #判断滑块出现流程
# 初始化事件对象
slider_event = threading.Event()

def check_state():
    def poll_slider_state():
        while True:
            process7.main({}) #判断滑块出现流程
            if glv['判断滑块出现']:
                print(f"[{datetime.now()}] 检测到滑块,开始处理...")
                # 重置事件(设为未完成状态)
                slider_event.clear()
                # 启动处理线程
                threading.Thread(target=process4.main({}), daemon=True).start() #处理滑块流程加入线程处理
                # 等待滑块处理完成
                slider_event.wait()  # 此处会阻塞轮询线程
                print(f"[{datetime.now()}] 滑块处理完成,继续轮询...")
    
    # 启动轮询线程
    polling_thread = threading.Thread(target=poll_slider_state, daemon=True)
    polling_thread.start()

全局变量默认不出现

判断滑块是否出现流程

调用模块放流程主流程第一行即可


收藏54
全部评论1
最新
发布评论
评论