网站首页 > 技术文章 正文
最近发现很多伙伴在项目中都会遇到验证码问题,而验证码种类又有很多。本帖主要是深入一下“滑动验证码”与“按照语序验证码”两个类型的验证码。
论坛里关于验证码的帖子较多,但是大部分初试水的使用者来说,可能还是会遇到一些问题。而本帖主要讲两点:
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%还是大了,再相应调小一点。
图四
图五
这里就结束了,相应工程再次就不发了,论坛有较多的帖子并附有工程。
猜你喜欢
- 2024-10-26 最近别来杭州!怕你不想回去了……
- 2024-10-26 为什么有人不用免费的WPS,偏要花钱用Office?看完这些就知道了
- 2024-10-26 还在苦恼验证码怎么实现?看看这个验证码组件合集,你想要的都有
- 2024-10-26 时间浪费在哪儿?(时间浪费四种情形)
- 2024-10-26 qq账号被冻结了怎么快速解冻手机号换了
- 2024-10-26 产品心理学:给予用户理解和宽容(产品的心理功能有( )( )( ))
- 2024-10-26 OPPO Reno4 Pro忘记OPPO帐号密码怎么办?
- 2024-10-26 你知道新买的手机,怎样重新登录微信账号吗?
- 2024-10-26 短信验证码的深度剖析(短信验证码起什么作用)
- 2024-10-26 才发现,一个手机号可以注册2个微信了,操作简单,一看就能学会
- 11-26Win7\8\10下一条cmd命令可查得笔记本电脑连接过的Wifi密码
- 11-26一文搞懂MySQL行锁、表锁、间隙锁详解
- 11-26电脑的wifi密码忘记了?一招教你如何找回密码,简单明了,快收藏
- 11-26代码解决忘记密码问题 教你用CMD命令查看所有连接过的WIFI密码
- 11-26CMD命令提示符能干嘛?这些功能你都知道吗?
- 11-26性能测试之慢sql分析
- 11-26论渗透信息收集的重要性
- 11-26如何查看电脑连接过的所有WiFi密码
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)