双阴影滑块验证之带带弟弟-by北方组
评论
收藏

双阴影滑块验证之带带弟弟-by北方组

经验分享
南山
2024-01-19 10:09·浏览量:1026
南山
发布于 2024-01-11 15:45更新于 2024-01-19 10:091026浏览

实现效果

   调整之后基本上可以做到对齐率90%以上,额想放个视频来着,放不下,完整gif也太大了,尴尬了


实现方式

   说白了就是获取正确元素,进行截图,然后调用dddd计算移动距离,最后调整偏差


1、获取目标图块

   滑块验证的目标图块我遇到的有两种情况,一种是小图块,另一种是大图块,此处判断依据是捕获元素时,校验框的大小


   当目标图块为小图块时,此时直接使用【网页截图】指令,对该元素进行截图保存就可以,注意后缀需保存为jpg

   当目标图块为大图块时,此时要看网页代码,获取到该图片的网络地址,用【http】下载来保存图片,注意后缀需为png

正确保存的元素截图应如下

                                                                                                                   


2、获取背景图片

   验证码背景图片也有两种情况,一种是可以直接获取到图片地址,另外一种是canvas绘制

当你能直接获取到地址时,可以直接下载保存图片(【获取元素对象】或【获取元素属性】指令),不可直接使用【网页截图】进行图片获取


   当背景图片是通过canvas绘制时,此时只能使用【截屏】指令提取指定部分区域,来保存背景图片


   (如果你发现目标图块和背景图片都是canvas绘画的,有个邪教路子,直接右键图片另存为,大图块会直接保存为透明背景的png,背景图片直接保存为没有目标图块的背景,很邪教,但是不知道通用不)


   截图实现方式很绿皮,为了排除目标图块的干扰,需先鼠标移动到目标图块最右边,获取鼠标位置,然后在移动到背景图片的右边,上下边,获取位置,然后使用截图。大家如果有更好的办法,还请分享。

   注:背景图片的格式jpg和png都可以,别的格式我还没有尝试过


3、计算位置

   有了目标图块,和背景图片之后,可以直接使用插入代码段调用dddd进行计算

   当你的目标图块为小图块时,可直接使用【插入代码段】指令来运行下面代码,别忘了改图片路径

import ddddocr

slide = ddddocr.DdddOcr(det=False, ocr=False)

with open('目标图块路径.jpg', 'rb') as f:
    target_bytes = f.read()

with open('背景图片路径', 'rb') as f:
    background_bytes = f.read()

res = slide.slide_match(target_bytes, background_bytes, simple_target=True)

   当目标图块为大图块时,插入的代码如下

import ddddocr

slide = ddddocr.DdddOcr(det=False, ocr=False)
    
with open('目标图块路径.png', 'rb') as f:
    target_bytes = f.read()
    
with open('背景图片路径', 'rb') as f:
    background_bytes = f.read()
    
res = slide.slide_match(target_bytes, background_bytes)

   通过上方代码运行后,res中会返回匹配位置的两个坐标,格式为[左上x,左上y,右下x,右下y]

                                     

   此坐标的坐标原点是背景图片左上角,x轴向右和y轴向下为正



4、移动鼠标

   得到坐标之后,即可计算出 平移距离=(左上x+右下x)/2

   因为滑块与背景图片的相对位置每个网站都不一样,所以 真实滑动距离=平移距离+偏移量

   这个偏移量就要大家自己尝试了


缺陷

   此方法尽管可以做到准确度较高,但在移动鼠标阶段的偏差值可能只适配一台电脑,不能动态调整。

   说实话,没啥技术含量,就是要自己调调参数,有急需的可以救急一下,后续等❤剑心哥哥❤优化官方指令吧


应用链接

   此处分享了

爱库存 商户云平台 登录界面

的双阴影实现应用,大家可以进行优化尝试,指令很少,很好理解

   https://api.winrobot360.com/redirect/robot/share?inviteKey=547ce58ba1779189


我忘了企业外获取不到应用,我把应用贴图贴上来吧

收藏19
全部评论1
最新
发布评论
评论