【苍穹RPA】登陆滑动验证码解决方案原创
金蝶云社区-Man_what_can_isay
Man_what_can_isay
1人赞赏了该文章 2,267次浏览 未经作者许可,禁止转载编辑于2022年12月05日 16:54:53
summary-icon摘要由AI智能服务提供

文本介绍了RPA流程自动化中处理滑动验证码的难点和解决方案。滑动验证码分为普通和带人机验证两类,需定位缺口和滑块计算滑动距离。对于未加密的验证码,可通过cv2计算缺口位置;加密的则可用第三方服务。具体步骤包括设计容错逻辑、截图验证码、识别坐标计算位移、滑动滑块,并提供了针对不同情况的具体操作步骤。

在进行RPA流程自动化的开发过程中,必然面临人机验证这一关卡。而验证码是大部分网站及应用采用的防护措施。其中滑动验证码解决难度较高,需要掌握一些技巧即可。

本文针对滑动验证码展开分析,滑动验证码一般有两类,一类普通的只需要滑动对地方即可,另一类额外加了人机验证的机制,滑动匀速、过快、过慢时,哪怕滑动位置正确等都会验证失败。

79b8dad20bd32267c3edc5ab099383a.jpg

 图 一 :RPA滑动位置正确,但被人机验证机制拒绝

解决滑动验证码的步骤无非就是两步:第一步,定位背景缺口和滑块位置,计算出需要滑动的距离。第二步,滑动对应的距离。

对于能够直接获取滑块小图与背景图的滑动验证码,通过使用cv2模块的matchTemplate函数,可以准确地计算出缺口位置。但是,在一些安全要求较高的网站中,已将滑块小图与背景图元素进行加密隐藏,无法直接获取。这种情况可以调用第三方提供的验证码识别服务(我们的设计器已经有集成好的组件),本文主要针对未隐藏元素的滑动验证码进行分析。(文章仅展示部分代码,工程附件自取)

image.png

      图 二:未隐藏元素的滑动验证码



一 、普通滑块验证码(不写代码,验证码组件解决)

验证网站:https://www.geetest.com/show


第1步 设计循环容错逻辑保证验证成功,但不要写死循环,超过容错次数需结束循环

image.png

第2步 【元素截图】组件截取验证码图片

B5TdaON8.png

第3步  通过【验证码】组件识别(code:9000),返回1-2组坐标,然后解析坐标得出位移距离

    image.png

image.png

返回值样例:【21,44】或【21,44,32,14

识别的移动距离分别为21(一组坐标为第一个数字)或32(两组坐标为第三个数字)


第4步  根据解析出的距离滑动滑块

可以先用【获取元素位置】组件获取滑块坐标(x,y),【拖动】组件目标坐标(x+第三部算出的位移,y)

具体其他细节自行参考附件工程。


二、有人机验证机制滑块验证码(openCV算法计算位置,离线内网环境也可使用)

验证网站:https://passport.shop.jd.com/login/index.action某电商平台商家后台


第1步 设计循环容错逻辑保证验证成功,但不要写死循环,超过容错次数需结束循环

image.png



第2步 【元素截图】组件截取验证码大图及滑块小图

MGT9uFeW.png                               MIa2O5fP.png


第3步  通过python的openCV库。计算出位移距离


image.png


第4步  根据解析出的距离,通过pyautogui模拟人工操作不匀速滑动滑块

image.png


工程见附件

图标赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!