【验证码】解决滑动加文字识别验证码

有同学在项目上碰到这样一种验证码:
317fda28028e48c0896f05dcc90ee28c_image.png 02baabec046d4db28018ea9993dce6f8_image.png
这种验证码需要鼠标滑动加上文字识别,接下来我们就用 8.0 版本实现一下此功能。

首先看一下解锁步骤全流程:

b75d226ece224cadaeba869dac7f457e_image.png

接下来我们分别讲解一下里面的关键步骤

第一步 解决鼠标滑动

这一步我是用代码实现,点击固定的坐标滑动解锁。

from ctypes import *
from ctypes.wintypes import *

def imouse_drag(x1, y1, x2, y2,button='left',speed=10):
    try:
        dll = windll.LoadLibrary("../Com.Isearch.Func.AutoIt/AutoItX3.dll")
        return dll.AU3_MouseClickDrag(button,x1,y1,x2,y2,speed)
    except Exception as e:
        raise e
		

第二步 截取需要识别的验证码图片

d36061aaa17b479d9a13d12095af004d_image.png

注意:最后返回的位置,是根据你截图的范围决定的。

第三步 判断验证码位置

把截图的路径给到滑动验证码控件,并且控件设置codetype:8001
8ef699b865ec4188be6b02c5326b30ac_image.png
不同端口可以开启不同的功能:
a3ae4f29120a4d45830302eda903634e_image.png

第四步 提取位置参数并点击鼠标

efe13407dea34ff296aa30ac1d8b207d_image.png

bf86a668b1194417bb41cef097a1f56e_image.png

第五步 判断是否成功

7aef2ba06d0c4b438acdee1097151c7b_image.png
通过获取最后验证成功的文本来判断验证码是否识别成功,如不成功则继续重新验证。

86e3d5cfc07b49d589d63f8134640b15_image.png

代码包

yanzhengma.zip