优秀的编程知识分享平台

网站首页 > 技术文章 正文

RPA实战:“滑动”验证码与按照“语序”点击两类验证码

nanyue 2024-10-26 11:24:22 技术文章 2 ℃

最近发现很多伙伴在项目中都会遇到验证码问题,而验证码种类又有很多。本帖主要是深入一下“滑动验证码”与“按照语序验证码”两个类型的验证码。

论坛里关于验证码的帖子较多,但是大部分初试水的使用者来说,可能还是会遇到一些问题。而本帖主要讲两点:

1、在滑动验证过码,使用全局函数中涉及的变量,如何根据各自开发的PC端来传入坐标变量;
2、使用某平台,如“超人打码平台”,发生超时,没有返回值,可能存在的原因;

进入主题:

1、滑动 - 验证码:

  • 实现思路:
 滑动验证码,首先肯定的是,需要点击滑块的初始位置,移动到图片的缺口位置,完成图片的拼图。而我们要做的就是
知道鼠标从初始位置,需要向右移动多少。
  • 解决方案:
 这一点,我们设计器的“验证码”模块便可解决,注意的是在验证码模块右边目标属性的 codetype这一属性中,需要
填入“8001”,为什么要填入“8001”呢?相信大部分人都知道,“8001”这一属性,最终该模块的返回值是一个坐标,而
我们在解决滑动验证码的时候,就是需要知道滑块从初始位置到最终位置滑动的距离。
  • 注意点:
 相信看过论坛里其他关于验证码帖子的,都会见过类似如下图图一的一个全局函数,且该全局函数需传的参数
可能如下图图二。会发现需要传入4个数据,而这4个值,会因每台PC分辨率的不同而不同的。
 如此,我们如何根据自己的这台PC来找到这几个变量呢?
 首先,我们要知道,PC的坐标是以左上角为(0,0)开始的,及往右或往下是为正。
 参数的x与y的值,及第一、二参数,我们可以用模块“鼠标点击”拾取如图三箭头所示位置,滑块的最中心位置。
鼠标拾取,用鼠标悬停在该位置,我们可以看到左上方是有坐标位置的,这两个值,就是我们需要的x与y的参数。
二第四个参数是如第二个参数相等的。因为我们只需要通过x轴移动,y轴是不变的。而第三个参数x0,则是通过
鼠标拾取悬停在该滑块最左侧的位置,或相应的增减较小的值得到。

图一

图二

图三

2、按照语序点击 - 验证码

  • 实现思路
同样,如图四所示:
我们也是通过截图,传给某平台,通过他们返回坐标,然后我们再一次点击坐标。
  • 解决方案:
 这里需要注意的是,通过平台返回的坐标并不是该文字在屏幕上的坐标,而是你截图图片中,该文字的坐标。
所有我们这里取得原始坐标是鼠标点击拾取悬停在该截图的最左上方的位置,得到的坐标为原始的坐标,我们再将
平台返回的坐标与原始坐标相加便可得到屏幕中该文字的坐标位置。
 如图五代码中,x,y的值就是截图左上方位置的坐标;x1,y1是点击“确认”按钮的坐标位置。
  • 注意点:
 目前在解决,这一类验证码,我们用的比较多的是“超人打码”平台。需注意的是,该平台对截图图片的大小有限制,
为图片限制 200KB 550*550PX。
 若我们在使用接口的时候遇到“超时”报错的时候,基本就是图片太大造成的。这里就需要看下我们使用浏览器的
缩放级别是不是为 100%,若100%还是大了,再相应调小一点。

图四

图五

这里就结束了,相应工程再次就不发了,论坛有较多的帖子并附有工程。

最近发表
标签列表