rpa代替人工获取网页数据(纯用来也UiBot实现滑块过验证)
需要5.1.1以上版本支持
以京东为例,随便输入账号密码登录就会出现验证码
网址:https://www.jd.com/
刷新图片发现,中间黑色区域是变化最小,可以作为特征用
初始滑块与下面箭头是对应的
所以获取黑色区域位置和箭头位置模拟鼠标拖动完成验证
按着思路实现就好了
1.鼠标移动到黑色图像像上,【截图把黑色块全部截全就好】
2.获取鼠标位置1
3.鼠标移动到箭头图像像上
4.获取鼠标位置2
5.拖动鼠标从位置1到位置2
6.完成
截图位置不同实际位置有偏差,设置偏移量修正
实际运行位置正确,也无法过验证,这就需要模拟人运行轨迹了,有加减速,抛物线移动···
仅提供思路,具体更多详细借鉴帖子:
RPA大神之路|UiBot过滑动验证码检测实例 - 知乎
如有更多建议或优化,欢迎跟帖交流
源码:
dim ob = ""
dim oc = ""
dim steps = ""
dim distance = ""
#icon("@res:966i0rk9-tpe5-npev-67d2-bpfu3r5dn3e4.png")
Image.Hover({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"* - Google Chrome","app":"chrome"}]},{"height":0,"width":0,"x":0,"y":0},@res"966i0rk9-tpe5-npev-67d2-bpfu3r5dn3e4.png",0.7,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate","sMatchType":"GrayMatch","iSerialNo":1})
ob=Mouse.GetPos()
TracePrint(ob)
#icon("@res:o5suc5k4-n3q1-1j56-thsm-nhlfmp1a14f5.png")
Image.Hover({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"京东-欢迎登录 - Google Chrome","app":"chrome"}]},{"height":0,"width":0,"x":0,"y":0},@res"o5suc5k4-n3q1-1j56-thsm-nhlfmp1a14f5.png",0.9,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate","sMatchType":"GrayMatch","iSerialNo":1})
oc=Mouse.GetPos()
TracePrint(oc)
Mouse.Click("left", "down", [],{"iDelayAfter":300,"iDelayBefore":200})
distance = ob["x"] 4-oc["x"]
TracePrint(distance)
steps = getHuakuaiMovePath(distance)
huaKuaiMoveStep(steps)
Mouse.Click("left", "up", [],{"iDelayAfter":300,"iDelayBefore":200})
// 变速运动路径
Function getHuakuaiMovePath(distance)
Dim a,stack,v,back_stacks
distance = distance 20
// 初速度
Dim v0 = 0
// 加减速度列表
Dim a_list = [3, 4, 5]
// 时间
Dim t = 0.2
// 初始位置
Dim s = 0
// 向前滑动轨迹
Dim forward_stacks = []
Dim md = distance * 3 / 5
Do While s < distance:
If s < md
a = a_list[cint(Rnd() * 2)]
Else
a = a_list[cint(Rnd() * 2)] * -1
End If
v = v0
stack = v * t 0.5 * a * (t ^ 2)
// 每次拿到的位移
stack = Math.Round(stack,0)
s = s stack
v0 = v a * t
push(forward_stacks,stack)
Loop
back_stacks = [-1, -1, -2, -3, -2, -3, -2, -2, -3, -1]
return {'forward_stacks': forward_stacks, 'back_stacks': back_stacks}
End Function
/* 鼠标模拟滑块移动
* steps:匀加速运动轨迹。getHuakuaiMovePath(distance)的返回结果。
* getHuakuaiMovePath(distance)
* huaKuaiMoveStep(steps)
*/
Function huaKuaiMoveStep(steps)
Dim front=steps["forward_stacks"]
Dim back=steps["back_stacks"]
For Each value In front
Mouse.Move(value, 0, true)
Delay(12)
Next
For Each value In back
Mouse.Move(value, 0, true)
Delay(34)
Next
Delay(200)
End Function
如有更多建议或优化,欢迎跟帖交流
更过内容参考:
RPA大神之路|破解滑块(极验)验证码思路 - 知乎
成就RPA大神之路,来也自然靠得住!关于来也科技
来也科技RPA AI现已免费使用社区版,要想体验智能自动化平台产品,您可点击链接试用!
更多关于LAIYE 智能自动化等问题,欢迎登陆
来也科技(北京)有限公司官网
了解!更有免费专属一对一教练为您提供解答疑惑!也可私信来也科技咨询了解!
来也科技作为中国乃至全球的智能自动化领军品牌,为客户提供变革性的智能自动化解决方案,提升组织生产力和办公效率,释放员工潜力,助力政企实现智能时代的人机协同。来也科技的产品是一套智能自动化平台,包含机器人流程自动化(RPA)、智能文档处理(IDP)、对话式AI(Conversational AI)等。基于这一平台,能够根据客户需要,构造各种不同类型的软件机器人,实现业务流程的自动化,全面提升业务效率。目前,来也科技帮助电力,银行,保险、通信、零售等多行业的企业客户,以及数字政府、公共医疗、高校职教在内的公共事业领域,实现了各种业务场景的深度突破与打通,构建起了端到端的自动化解决方案,已服务超过 200 家 500 强企业,200 余个省市政府及上千家中小企业,2021年《财富》世界500强榜单前十名企业中,7 家在使用来也科技的智能自动化产品。
同时来也科技拥有着最完善的RPA开发者生态社区,社区用户目前近70W!拥有大量智能自动化在各领域的应用案例!欢迎加入来也开发者社区交流!关注来也科技,智能自动化平台等你来探索!,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com