影刀RPA 验证码处理方案:识别与绕过策略
影刀RPA 验证码处理方案识别与绕过策略署名林焱什么情况用什么做网页自动化采集时登录或频繁请求经常遇到验证码。验证码类型不同处理策略也不同。验证码类型推荐方案成功率纯数字/字母图片OCR识别 / 打码平台80-95%滑动拼图模拟轨迹滑动70-90%点选文字/图标打码平台 / AI模型60-85%reCAPTCHA/极验Cookie保持 降低频率视情况怎么做方案一影刀OCR识别简单验证码对于简单的数字字母验证码纯文本、无干扰线流程设计 1. 【等待元素出现】验证码图片元素 2. 【截图】截取验证码区域 3. 【OCR识别】识别截图中的文字 4. 【设置变量】识别结果存入变量 5. 【填写输入框】把识别结果填入验证码输入框 6. 【点击】点击登录按钮Python代码块优化识别拼多多店群自动化报活动上架fromPILimportImage,ImageEnhance,ImageFilterimportos# 验证码图片预处理提升OCR识别率defpreprocess_captcha(img_path,output_path):imgImage.open(img_path)# 转灰度imgimg.convert(L)# 二值化threshold160低于160变黑高于变白threshold160table[]foriinrange(256):ifithreshold:table.append(0)else:table.append(1)imgimg.point(table,1)# 去噪中值滤波imgimg.filter(ImageFilter.MedianFilter(size3))# 放大2倍提高OCR对小字识别率imgimg.resize((img.width*2,img.height*2))img.save(output_path)returnoutput_path# 预处理后交给影刀OCR指令识别preprocess_captcha(rD:\temp\验证码.png,rD:\temp\验证码_处理后.png)方案二滑动验证码处理importrandomimporttimedefgenerate_slide_track(distance,duration_ms800): 生成滑动轨迹模拟人工滑动先快后慢 distance: 需要滑动的距离像素 duration_ms: 总时长毫秒 track[]current0# 减速阶段参数middistance*0.7# 前70%加速后30%减速steps30# 总步数intervalduration_ms/stepsforiinrange(steps):ifcurrentmid:# 加速阶段ti/steps moveint(distance*0.7*(2*t-t*t))else:# 减速阶段remainingdistance-current movemax(1,int(remaining*0.15))# 添加随机抖动jitterrandom.randint(-1,2)movemax(1,movejitter)currentmove track.append({x:min(current,distance),y:random.randint(-1,1),# y方向微小抖动delay:intervalrandom.uniform(-5,10)})# 最后精确到目标位置track.append({x:distance,y:0,delay:100})# 稍微过冲再回退模拟人工微调track.append({x:distance3,y:0,delay:50})track.append({x:distance,y:0,delay:80})returntrack# 生成滑动轨迹trackgenerate_slide_track(200)# 滑动200像素# 在影刀中用【模拟鼠标拖动】按轨迹滑动# yd_output {track: track}影刀流程配合1. 【等待元素出现】滑块元素 2. 【执行Python代码】生成滑动轨迹 3. 【鼠标按下】在滑块上按下 4. 循环按轨迹移动鼠标 - 【设置变量】x坐标、y坐标、延迟时间 - 【鼠标移动】到相对位置 - ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6dceb5cdbd3446a8948073d94dd417ea.png#pic_center) - 【等待】延迟时间 5. 【鼠标释放】松开滑块 6. 【等待】检测是否验证成功方案三打码平台API调用importrequestsimportbase64importtimedefrecognize_captcha(image_path,api_url,api_key):调用打码平台识别验证码# 读取图片并base64编码withopen(image_path,rb)asf:img_base64base64.b64encode(f.read()).decode()# 提交识别任务responserequests.post(api_url,json{image:img_base64,type:captcha,# 验证码类型api_key:api_key},timeout30)resultresponse.json()ifresult.get(code)0:returnresult.get(data,{}).get(result,)else:print(f识别失败:{result.get(message)})returnNone# 使用coderecognize_captcha(rD:\temp\验证码.png,https://api.example.com/recognize,your_api_key)ifcode:print(f验证码:{code})方案四Cookie保持避免频繁触发验证码importrequestsimportpickleimportosclassCookieManager:保持登录状态避免频繁触发验证码def__init__(self,cookie_filecookies.pkl):self.cookie_filecookie_file self.sessionrequests.Session()self.session.headers.update({User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36})defsave_cookies(self):保存Cookie到文件withopen(self.cookie_file,wb)asf:pickle.dump(self.session.cookies,f)defload_cookies(self):加载已保存的Cookieifos.path.exists(self.cookie_file):withopen(self.cookie_file,rb)asf:self.session.cookiespickle.load(f)returnTruereturnFalsedefis_logged_in(self,check_url):检查Cookie是否还有效respself.session.get(check_url,allow_redirectsFalse)returnresp.status_code200defrequest_with_retry(self,url,methodGET,max_retries3,**kwargs):带重试的请求forattemptinrange(max_retries):try:respself.session.request(method,url,timeout15,**kwargs)if验证码inresp.textorcaptchainresp.text.lower():print(f触发验证码尝试{attempt1}/{max_retries})time.sleep(5*(attempt1))# 等待后重试continuereturnrespexceptExceptionase:print(f请求失败:{e}, 重试{attempt1})time.sleep(3)returnNone# 使用cmCookieManager(rD:\config\site_cookies.pkl)cm.load_cookies()# 每次请求用session保持Cookierespcm.request_with_retry(https://example.com/data)完整流程带验证码处理的登录importrequestsimporttimeimportos# yd_input: username, password, max_captcha_retriesusernameyd_input.get(username,)passwordyd_input.get(password,)max_retriesyd_input.get(max_captcha_retries,3)sessionrequests.Session()session.headers.update({User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36})# 先访问登录页获取Cookiesession.get(https://example.com/login)forattemptinrange(max_retries):print(f第{attempt1}次尝试登录)# 1. 下载验证码图片captcha_respsession.get(https://example.com/captcha.png,timeout10)captcha_pathrD:\temp\captcha.pngwithopen(captcha_path,wb)asf:f.write(captcha_resp.content)# 2. 识别验证码这里用影刀OCR或打码平台# 实际使用时用影刀OCR指令识别或调用打码API# captcha_code yd_input.get(captcha_code, ) # 从影刀获取# 模拟OCR结果captcha_code# 实际从OCR获取ifnotcaptcha_code:print(验证码识别失败重试)time.sleep(2)continue# 3. 提交登录login_data{username:username,password:password,captcha:captcha_code}respsession.post(https://example.com/login,datalogin_data,timeout15)# 4. 检查是否登录成功if登录成功inresp.textorresp.urlhttps://example.com/home:# 保存Cookie供后续使用importpicklewithopen(rD:\config\cookies.pkl,wb)asf:pickle.dump(session.cookies,f)yd_output{status:ok,message:登录成功,attempts:attempt1}breakelif验证码inresp.text:print(验证码错误重试)time.sleep(2)else:print(f登录失败:{resp.text[:200]})yd_output{status:error,message:登录失败}breakelse:yd_output{status:error,message:f超过最大重试次数{max_retries}}有什么坑坑一OCR识别率太低现象简单数字验证码OCR识别率只有30%。原因验证码有干扰线、背景噪点、字体扭曲等干扰。解决图片预处理 多次重试fromPILimportImage,ImageFilterdefenhance_captcha(img_path):验证码图片预处理imgImage.open(img_path)# 1. 转灰度imgimg.convert(L)# 2. 增强对比度fromPILimportImageEnhance enhancerImageEnhance.Contrast(img)imgenhancer.enhance(2.0)# 3. 二值化imgimg.point(lambdax:0ifx140else255,1)# 4. 去噪imgimg.filter(ImageFilter.MedianFilter(size3))# 5. 放大imgimg.resize((img.width*3,img.height*3))img.save(img_path)returnimg_path# 预处理后识别率可提升到60-80%# 配合多次重试识别3次取出现最多的结果坑二滑动验证码总被识别为机器现象滑动距离对了但验证不通过提示请在滑块上拖动。TEMU店群矩阵自动化运营核价报活动原因滑动轨迹太规整——匀速直线移动没有人类滑动的特征先快后慢、微小抖动。解决使用更真实的轨迹模拟# 关键人类滑动有三个特征# 1. 先加速后减速不是匀速# 2. y方向有微小波动# 3. 结尾有过冲和回退# 参考前面的 generate_slide_track 函数# 核心是 mid点之前用加速公式之后用减速公式# 最后加过冲回退坑三验证码图片每次请求都变现象下载了验证码图片识别后提交但系统说验证码不对。原因验证码图片和登录请求不在同一个Session中服务器生成了新的验证码。解决用同一个requests.Session# 正确用同一个sessionsessionrequests.Session()# 下载验证码服务器记住了这个验证码的值captcha_respsession.get(https://example.com/captcha.png)# 提交登录同一个sessionCookie一致login_respsession.post(https://example.com/login,data{...})# 错误两个独立请求# captcha requests.get(https://example.com/captcha.png) ❌ 新Session# login requests.post(https://example.com/login, data{...}) ❌ 新Session验证码对不上坑四频繁触发验证码导致IP被封现象连续识别验证码登录多次后IP被封禁。原因短时间内大量请求触发了反爬机制。解决控制频率 Cookie复用importtimeimportrandom# 1. 成功登录后保存Cookie后续请求不再登录# 2. 请求间隔加随机延迟defsmart_sleep(min_sec2,max_sec5):随机延迟避免规律性time.sleep(random.uniform(min_sec,max_sec))# 3. 设置合理的重试间隔forattemptinrange(max_retries):# 尝试操作ifsuccess:break# 失败后指数退避wait_time(2**attempt)random.uniform(0,3)print(f等待{wait_time:.1f}秒后重试)time.sleep(wait_time)

相关新闻

组合辅助驾驶-BSDLCA(盲点监测/变道辅助)功能全解析:从原理到应用

组合辅助驾驶-BSDLCA(盲点监测/变道辅助)功能全解析:从原理到应用

引言:什么是BSD与LCA?在高级驾驶辅助系统(ADAS)中,盲点监测(BSD,Blind Spot Detection)和变道辅助(LCA,Lane Change Assist)是两项至关重要的安全…

2026/7/26 4:22:49 阅读更多 →
组合辅助驾驶-RCW(后向碰撞预警)功能全解析:从原理到应用

组合辅助驾驶-RCW(后向碰撞预警)功能全解析:从原理到应用

摘要RCW(Rear Collision Warning,后向碰撞预警)是组合辅助驾驶系统中的一项关键安全功能,旨在监测车辆后方快速接近的潜在威胁,并通过分级预警提示驾驶员,以降低追尾事故风险。本文将从系统原理、核心功能模…

2026/7/26 4:22:49 阅读更多 →
Unity高性能视频流输出:KlakSpout插件原理、配置与优化实战

Unity高性能视频流输出:KlakSpout插件原理、配置与优化实战

1. 项目概述:为什么Unity开发者需要KlakSpout?如果你在Unity里做过实时渲染内容的对外输出,比如把游戏画面投到直播软件、或者把虚拟摄像机画面送到另一个专业软件里做合成,那你大概率踩过视频流传输这个坑。Unity自带的方案&…

2026/7/26 4:22:49 阅读更多 →

最新新闻

CC2538无线SoC开发指南:从ARM Cortex-M3到Zigbee低功耗设计

CC2538无线SoC开发指南:从ARM Cortex-M3到Zigbee低功耗设计

1. 项目概述与核心价值如果你正在寻找一颗能扛起复杂无线传感网络节点重任的芯片,那么德州仪器(TI)的CC2538绝对是一个绕不开的选项。这颗芯片在物联网(IoT)和无线传感器网络(WSN)领域&#xff…

2026/7/26 4:33:53 阅读更多 →
YOLOv8工业质检实战:架构解析与优化技巧

YOLOv8工业质检实战:架构解析与优化技巧

1. 项目概述YOLOv8作为当前目标检测领域最前沿的开源模型之一,凭借其出色的实时性和精度平衡,正在工业界掀起新一轮应用热潮。我在过去半年中深度参与了三个基于YOLOv8的工业质检项目,从最初的模型选型困惑到现在的定制化优化,积累…

2026/7/26 4:33:52 阅读更多 →
TI平台CSI-2协议引擎寄存器配置详解与实战调试指南

TI平台CSI-2协议引擎寄存器配置详解与实战调试指南

1. 项目概述与CSI-2协议引擎核心价值在嵌入式图像处理系统里,图像传感器和主处理器之间的数据传输通道,其性能与稳定性直接决定了整个视觉应用的成败。我接触过不少项目,从简单的二维码识别到复杂的多目立体视觉,最终卡脖子的往往…

2026/7/26 4:33:52 阅读更多 →
深入解析CC27xx SYSTIM模块:高精度定时与射频时序同步实战

深入解析CC27xx SYSTIM模块:高精度定时与射频时序同步实战

1. SYSTIM模块在CC27xx系统中的核心定位与价值在CC27xx这类面向物联网和低功耗无线连接的无线MCU中,时间就是一切。无论是蓝牙低功耗(BLE)的广播间隔、连接事件的时间窗口,还是Sub-1GHz协议中精确的收发时序,都依赖于一…

2026/7/26 4:33:52 阅读更多 →
TI机器人迷宫挑战:从模块到系统的嵌入式开发实战

TI机器人迷宫挑战:从模块到系统的嵌入式开发实战

1. 项目概述:从模块到系统的工程跃迁如果你玩过乐高,大概能理解那种感觉:把一堆独立的零件(马达、传感器、轮子)拼在一起,最终得到一个能跑、能动的机器人。但当你真正开始用德州仪器(TI&#x…

2026/7/26 4:33:52 阅读更多 →
大模型生物安全测试:11个主流AI智能体的风险评估与防护方案

大模型生物安全测试:11个主流AI智能体的风险评估与防护方案

智能体时代,生物安全的“屏障”是否稳固?11个大模型测试给出答案在人工智能技术快速发展的今天,智能体和大模型已经成为各行各业的重要工具。特别是在生物安全领域,这些技术的应用潜力巨大,但同时也带来了新的安全挑战…

2026/7/26 4:32:52 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻