CN111310155B - 一种用于滑块验证码自动识别的系统架构及实现方法 - Google Patents
一种用于滑块验证码自动识别的系统架构及实现方法 Download PDFInfo
- Publication number
- CN111310155B CN111310155B CN201911187482.5A CN201911187482A CN111310155B CN 111310155 B CN111310155 B CN 111310155B CN 201911187482 A CN201911187482 A CN 201911187482A CN 111310155 B CN111310155 B CN 111310155B
- Authority
- CN
- China
- Prior art keywords
- slider
- server
- mouse
- sliding block
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/36—User authentication by graphic or iconic representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种用于滑块验证码自动识别的系统架构及实现方法。该系统架构包括网页浏览器、Selenium、X服务器、X服务器虚拟显卡驱动、真实输入输出驱动、X服务器的封装驱动、X服务器配置文件、滑块识别应用程序模块。实现方法为:安装网页浏览器;安装Selenium的浏览器驱动程序;安装Selenium库函数;安装X服务器及其虚拟显卡驱动;安装真实输入输出驱动,以及X服务器的封装驱动;加载X服务器配置文件,定义虚拟桌面参数,同时加载真实输入输出驱动;启动X服务器以及滑块识别应用程序模块,控制鼠标点击、拖拽、释放滑块到缺口位置。本发明实现了拟人化操作,可支持不同滑块验证码供应商,通用性和延展性好。
Description
技术领域
本发明涉及互联网技术领域,特别是一种用于滑块验证码自动识别的系统架构及实现方法。
背景技术
验证码是一种图灵测试,用于判断操作对象是否是人类。在软件测试领域,测试人员使用软件对网站进行自动化测试、信息快速发布以及自动化交易,验证码的自动化识别有助于提升测试效率和测试覆盖率,减少人工测试环节,从而避免人为操作错误。滑块验证码是图灵测试的一种具体实现形式,其实现类型叫动态感知游戏(Dynamic CognitiveGame)。目前,行业内均在研究具有完整端到端的滑块验证码自动识别技术,该技术包括系统架构层面和算法层面的研究。
在系统架构层面,常用的方法是通过破解滑块验证码网站前端和后端交互接口报文和输入输出参数,即通过http的POST和GET方式获取滑块图片、输出位移信息并进行破解,来实现滑块验证码的自动识别。然而,由于不同公司的滑块验证码通常采用不同的B/S前后端交互机制,且http报文传输的加密和参数脱敏方式也不相同,因此该方法需要逐一破解,难度大、通用性差、技术可行性较低。
发明内容
本发明的目的在于提供一种能够实现拟人化操作,且通用性和延展性好的用于滑块验证码自动识别的系统架构及实现方法。
实现本发明目的的技术解决方案为:一种用于滑块验证码自动识别的系统架构,包括网页浏览器、浏览器自动化测试框架即Selenium、Linux的图形显示服务器即X服务器、X服务器虚拟显卡驱动、真实输入输出驱动、X服务器的封装驱动、X服务器配置文件、滑块识别应用程序模块,其中:
Selenium,用于滑块识别应用程序模块对网页浏览器的自动化控制;
X服务器,用于实现虚拟桌面,支持无头服务器部署,并支持滑块识别应用程序对虚拟鼠标光标的控制操作;
X服务器的封装驱动,用于X服务器在启动时通过Linux内核动态加载真实输入输出驱动;
X服务器配置文件,用于配置X服务器,定义虚拟桌面参数,动态加载真实输入输出驱动、配置虚拟鼠标相关参数,以及配置相关虚拟显卡设置;
滑块识别应用程序模块,用于配置网页浏览器启动选项、加载Selenium框架,并运行滑块识别算法,得到鼠标轨迹序列,通过XTEST接口或者鼠标事件文件控制鼠标点击、拖拽、释放滑块到缺口位置;
所述滑块识别应用程序模块中,滑块识别算法具体包括以下单元:
模型训练单元,用于滑块缺口位置定位建模与线下模型训练,滑块拖动轨迹建模与线下模型训练;
滑块验证码触发单元,用于访问目标网站,触发滑块验证码;
屏幕截图单元,用于对屏幕进行截图,得到含有滑块图片和滑块缺口背景图片;
滑块位移距离计算单元,用于执行已训练好的目标检测模型,得到滑块缺口中心位置坐标,并计算得到滑块位移距离;
滑块拖动轨迹序列计算单元,用于执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹序列即鼠标轨迹序列;
鼠标操作控制单元,用于根据滑块拖动轨迹序列,控制鼠标点击、拖拽、释放到滑块缺口位置,完成滑块验证码的自动识别;
上述执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列,具体如下:
1)以滑块位移距离D为输入,执行在线下模型训练部分已训练好的LSTM前端模型,得到非均匀采样的时间序列t[n],单位为毫秒;
2)对时间序列t[n]进行预处理:包括零值填充(zero-padding)、归一化和数据维度转换;其中,归一化是指将t[n]的数值归一到[0,1]区间内;
3)以经过预处理的t[n]为输入,执行在线下模型训练部分已训练好的LSTM后端回归模型,得到初始滑块拖动轨迹时间序列(x[n],y[n],t[n]),其中x[n],y[n]分别表示在t[n]时刻滑块的中心位置横、纵坐标,单位为相对像素;
4)将初始滑块拖动轨迹时间序列(x[n]y[n],t[n])反归一化,将滑块的中心位置坐标单位转化成输入图片坐标域的像素点、将t[n]的单位转化为毫秒;
5)通过拉伸或压缩序列,对初始滑块拖动轨迹时间序列进行对齐处理,使得滑块拖动轨迹时间序列最终横坐标位置x[N]等于滑块位移距离D,其中N代表最后一个采样点;
6)将对齐处理后的滑块拖动轨迹时间序列数值近似为整数;
7)返回差分计算结果(x_t,y_t,t)作为最终的滑块拖动轨迹时间序列,其中差分计算具体为:x_t=x[n]–x[n-1],y_t=y[n]–y[n-1],t=t[n]–t[n-1]。
在其中一个实施例中,所述网页浏览器为Chrome浏览器或Firefox浏览器,或支持Web Driver API的其他网页浏览器。
在其中一个实施例中,游览器控制框架Selenium提供网页浏览器的API接口,使得网页浏览器能够被程序软件控制。
在其中一个实施例中,Selenium安装的库函数与滑块识别应用程序模块所使用的编程语言对应,使得通过该语言编写的滑块识别应用程序模块能够访问网页浏览器,并控制网页浏览器的操作。
在其中一个实施例中,所述X服务器配置文件,还用于无头服务headless mode的配置与部署,包括XTEST支持、鼠标驱动、显示器分辨率、DPI配置和键盘配置。
一种用于滑块验证码自动识别的系统架构实现方法,步骤如下:
步骤1、安装需要使用的网页浏览器;
步骤2、安装Selenium的浏览器驱动程序,该驱动程序提供网页浏览器的控制接口,使得网页浏览器能够被自动化控制;
步骤3、根据使用的编程语言选择对应的Selenium库函数安装,使得通过该语言编写的滑块识别应用程序模块能够访问网页浏览器,以及控制网页浏览器操作;
步骤4、安装X服务器;
步骤5、安装X服务器虚拟显卡驱动;
步骤6、安装真实输入输出驱动,以及X服务器的封装驱动,使X服务器在启动时通过Linux内核动态加载真实输入输出驱动;
步骤7、加载X服务器配置文件:该配置文件需事先编写好,用于配置X服务器,定义虚拟桌面参数,同时加载真实输入输出驱动、配置鼠标相关参数,该配置文件还需配置相关显卡设置,以及扩展接口相关设置,并打开XTEST支持;
步骤8、启动X服务器;
步骤9、开启X客户端接入权限;
步骤10、设置X协议通信方式;
步骤11、启动滑块识别应用程序模块,控制鼠标点击、拖拽、释放滑块到缺口位置,所述滑块识别应用程序模块中,滑块识别算法具体包括以下单元:
模型训练单元,用于滑块缺口位置定位建模与线下模型训练,滑块拖动轨迹建模与线下模型训练;
滑块验证码触发单元,用于访问目标网站,触发滑块验证码;
屏幕截图单元,用于对屏幕进行截图,得到含有滑块图片和滑块缺口背景图片;
滑块位移距离计算单元,用于执行已训练好的目标检测模型,得到滑块缺口中心位置坐标,并计算得到滑块位移距离;
滑块拖动轨迹序列计算单元,用于执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹序列即鼠标轨迹序列;
鼠标操作控制单元,用于根据滑块拖动轨迹序列,控制鼠标点击、拖拽、释放到滑块缺口位置,完成滑块验证码的自动识别;
上述执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列,具体如下:
1)以滑块位移距离D为输入,执行在线下模型训练部分已训练好的LSTM前端模型,得到非均匀采样的时间序列t[n],单位为毫秒;
2)对时间序列t[n]进行预处理:包括零值填充(zero-padding)、归一化和数据维度转换;其中,归一化是指将t[n]的数值归一到[0,1]区间内;
3)以经过预处理的t[n]为输入,执行在线下模型训练部分已训练好的LSTM后端回归模型,得到初始滑块拖动轨迹时间序列(x[n],y[n],t[n]),其中x[n],y[n]分别表示在t[n]时刻滑块的中心位置横、纵坐标,单位为相对像素;
4)将初始滑块拖动轨迹时间序列(x[n]y[n],t[n])反归一化,将滑块的中心位置坐标单位转化成输入图片坐标域的像素点、将t[n]的单位转化为毫秒;
5)通过拉伸或压缩序列,对初始滑块拖动轨迹时间序列进行对齐处理,使得滑块拖动轨迹时间序列最终横坐标位置x[N]等于滑块位移距离D,其中N代表最后一个采样点;
6)将对齐处理后的滑块拖动轨迹时间序列数值近似为整数;
7)返回差分计算结果(x_t,y_t,t)作为最终的滑块拖动轨迹时间序列,其中差分计算具体为:x_t=x[n]–x[n-1],y_t=y[n]–y[n-1],t=t[n]–t[n-1]。
在其中一个实施例中,步骤10所述X协议通信方式,具体为:客户端即滑块识别应用程序模块使用Unix端口与X服务器进行通信。
在其中一个实施例中,步骤11所述启动滑块识别应用程序模块,具体包括:
配置web浏览器启动选项;
加载Selenium框架;
运行滑块识别应用程序模块,得到鼠标轨迹序列;
根据鼠标轨迹序列,通过XTEST接口或者鼠标事件文件控制鼠标点击、拖拽、释放到滑块缺口位置。
在其中一个实施例中,在加载Selenium框架之前,还包括如下步骤:配置额外鼠标驱动选项。
本发明与现有技术相比,其显著优点为:(1)不受滑块前端页面特制控件、http传输协议加密的限制,通过直接控制浏览器和模拟鼠标移动,实现了拟人化操作,无需修改就可支持不同滑块验证码供应商,通用性和延展性好,支持用于无头服务器的部署;(2)在无物理鼠标硬件情况下,加载真实的鼠标Linux内核驱动,消除了程序对鼠标控制与真人对鼠标控制的差异性,提高了系统拟人拖动鼠标的鲁棒性,进而提高了滑块识别的通过率;(3)在系统部署形式上,支持用于无头服务器的部署,即在无物理显卡、无物理显示终端、无物理输入输出设备的Linux服务器上部署该系统。
附图说明
图1为一个实施例中滑块验证码的自动识别系统的架构图。
图2为一个实施例中滑块缺口位置定位建模与训练流程图。
图3为一个实施例中滑块拖动轨迹建模与训练流程图。
图4为一个实施例中滑块验证码的自动识别方法的流程图。
图5为一个实施例中LSTM模型线上执行流程图。
图6为一个实施例中滑块缺口位置输出示例1的示意图。
图7为一个实施例中滑块缺口位置输出示例2的示意图。
图8为一个实施例中位移距离与拖动耗时关联的示意图。
图9为一个实施例中时间非均匀采样序列概率分布示意图。
图10为一个实施例中拟人滑块拖动轨迹生成示例的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,提供一种的滑块验证码的自动识别方法,可以应用于如图1所示的滑块验证码的自动识别系统中,该系统包括X服务器启动模块和滑块识别程序模块,其中:
X服务器启动模块,用于加载X服务器配置文件、启动X服务器,并开启X客户端接入权限;
滑块识别程序模块,用于配置网页浏览器启动选项、加载Selenium框架,并运行滑块识别算法,得到鼠标轨迹序列,通过X服务器的XTEST接口或者Linux操作系统的鼠标事件文件控制鼠标点击滑块、拖拽滑块、释放滑块到缺口位置。
在一个实施例中,所述滑块识别程序模块,具体包括:
模型训练单元,用于滑块缺口位置定位建模与线下模型训练,滑块拖动轨迹建模与线下模型训练,
滑块验证码触发单元,用于访问目标网站,触发滑块验证码;
屏幕截图单元,用于对屏幕进行截图,得到含有滑块图片和滑块缺口背景图片;
滑块位移距离计算单元,用于执行已训练好的目标检测模型,得到滑块缺口中心位置坐标,并计算得到滑块位移距离;
滑块拖动轨迹序列计算单元,用于执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹序列即鼠标轨迹序列;
鼠标操作控制单元,用于根据滑块拖动轨迹序列,控制鼠标点击、拖拽、释放到滑块缺口位置,完成滑块验证码的自动识别。
在一个实施例中,上述用于滑块验证码自动识别的系统架构,包括网页浏览器、浏览器自动化测试框架即Selenium、Linux的图形显示服务器即X服务器、X服务器虚拟显卡驱动、真实输入输出驱动、X服务器的封装驱动、X服务器配置文件、滑块识别应用程序模块,其中:
Selenium,用于滑块识别应用程序模块对网页浏览器的自动化控制;
X服务器,用于实现虚拟桌面,支持无头服务器部署,并支持滑块识别应用程序对虚拟鼠标光标的控制操作;
X服务器的封装驱动,用于X服务器在启动时通过Linux内核动态加载真实输入输出驱动;
X服务器配置文件,用于配置X服务器,定义虚拟桌面参数,动态加载真实输入输出驱动、配置虚拟鼠标相关参数,以及配置相关虚拟显卡设置;
滑块识别应用程序模块,用于配置网页浏览器启动选项、加载Selenium框架,并运行滑块识别算法,得到鼠标轨迹序列,通过XTEST接口或者鼠标事件文件控制鼠标点击、拖拽、释放滑块到缺口位置。
具体地,上述网页浏览器为Chrome浏览器或Firefox浏览器,或支持Web DriverAPI的其他网页浏览器。
具体地,上述游览器控制框架Selenium提供网页浏览器的API接口,使得网页浏览器能够被程序软件控制。
具体地,上述Selenium安装的库函数与滑块识别应用程序模块所使用的编程语言对应,使得通过该语言编写的滑块识别应用程序模块能够访问网页浏览器,并控制网页浏览器的操作。
具体地,上述X服务器配置文件,还用于无头服务headless mode的配置与部署,包括XTEST支持、鼠标驱动、显示器分辨率、DPI配置、键盘配置。
具体地,上述用于滑块验证码自动识别的系统架构的实现方法如下:
(1.1)安装具体要使用的网页浏览器,比如Chrome浏览器或Firefox浏览器;
(1.2)安装Selenium的浏览器驱动程序,比如Chrome浏览器的驱动程序chromedrive;该驱动程序提供网页浏览器的控制接口,使得网页浏览器可以被程序自动化控制;
(1.3)根据使用的编程语言选择对应的Selenium库函数安装,使得通过该语言编写的滑块识别应用程序模块能够访问网页浏览器,以及控制网页浏览器操作;
以上(1.1)~(1.3)三个步骤完成了滑块识别应用程序可通过Selenium对浏览器进行自动化控制。下面的步骤介绍搭建X服务器来实现虚拟桌面,用来支持无头服务器部署,更重要的是用来支持滑块应用程序对虚拟鼠标的模拟操作。结合图1,滑块应用程序可根据鼠标模拟操作仿真度的不同需求,通过2种不同的方式对虚拟鼠标进行控制:使用这种架构的滑块验证码识别系统,可以绕过滑块验证码厂商对于用户交互、网页编码形式、网页应用前后端交互机制的加密和检测机制,同时也不再受到浏览器自动化框架对于输入输出设备控制(比如鼠标)的限制和框架本身的功能局限,在Linux操作系统层面实现对网页的自动化控制。
(1.4)安装X服务器;
(1.5)安装X服务器虚拟显卡驱动;
(1.6)安装真实输入输出驱动,以及X服务器的封装驱动,使X服务器可以在启动时通过Linux内核动态加载这些真实输入输出驱动。因为这些驱动是真实的物理硬件驱动,因此可以通过这些驱动实现虚拟鼠标的仿真程度最大化。
(1.7)加载X服务器配置文件:该配置文件需要事先编写好,该文件的作用是配置X服务器,定义虚拟桌面参数,如分辨率、DPI等,同时加载输入输出驱动、配置鼠标相关参数,已确保驱动被Linux内核正确加载。该配置文件还需配置相关显卡设置,比如禁用3D硬件加速等,以及扩展接口相关设置,在本实施例中,打开XTEST支持。
(1.8)启动X服务器;
(1.9)开启X客户端接入权限;
(1.10)设置X协议通信方式,比如客户端(滑块识别应用程序模块)将使用Unix端口与X服务器进行通信;
至此,图1所示的系统架构已完成搭建和启动,下面启动滑块验证码识别程序。
(1.11)启动滑块识别应用程序模块,控制鼠标点击、拖拽、释放滑块到缺口位置,滑块识别应用程序模块内部有如下步骤:
①配置web浏览器启动选项;
②配置鼠标驱动选项(可选);
③加载Selenium框架;
④运行滑块识别应用程序模块,得到鼠标轨迹序列;(注:滑块识别应用程序模块细节在下文的算法流程里详述);
⑤程序根据鼠标轨迹序列,通过XTEST接口或者鼠标事件文件控制鼠标点击、拖拽、释放到滑块缺口位置。
采用本实施例的方案,通过直接控制浏览器和模拟鼠标移动,实现了拟人化操作,从而从技术上绕过了http技术的局限性,同时,http加密对本发明系统架构完全透明,意味着本发明系统无需修改就可支持不同滑块验证码供应商,技术通用性和延展性高。在系统部署形式上,本发明系统支持用于无头服务器的部署,即在无物理显卡、无物理显示终端、无物理输入输出设备的Linux服务器上部署该系统。
在一个实施例中,如图2~5所示,提供了一种滑块验证码的自动识别方法,包括线下模型训练和线上模型服务两部分,其中:
第一部分、线下模型训练,包括以下步骤:
滑块缺口位置定位建模与线下模型训练:构建基于深度学习的目标检测模型,根据滑块缺口背景图片计算滑块缺口中心位置坐标,并标注矩形标注框,进行有监督的目标检测模型训练;
滑块拖动轨迹建模与线下模型训练:根据真人滑块拖动轨迹,建立LSTM前端模型,以及适应非均匀采样输入时序和可变长时序数据的LSTM后端回归模型,对建立的LSTM前端模型、LSTM后端回归模型进行训练。
在一个实施例中,上述滑块缺口位置定位建模与线下模型训练,具体如图2所示:
构建基于深度学习的目标检测模型,截取滑块缺口背景图片分别进行通用性图像处理和针对性图像处理;通用性图像处理包括缩放图片至固定大小、像素值均衡化操作,通用性图像处理结果用于深度学习目标检测模型的输入;针对性图像处理用于有监督学习的数据自动标注,根据针对性图像处理结果,计算滑块缺口中心位置坐标,并自动识别和标注矩形框,即为目标检测模型提供有监督的标签,从而进行无需人工数据标注的有监督的目标检测模型训练;最终,训练完成的目标检测模型用于输出滑块缺口位置的定位矩形框坐标,以及矩形框的中心坐标即滑块缺口中心位置坐标。
在一个实施例中,上述基于深度学习的目标检测模型,具体采用YOLO或SSD深度学习模型,进行有监督的目标检测模型训练,其中:
所述通用性图像处理,包括对滑块缺口背景图片进行单色灰度图转换、直方图均衡处理,并进行归一化使图像像素在[0,1]区间内;
所述针对性图像处理,包括对滑块缺口背景图片进行单色灰度图转换、ROI限制、二值化处理,采用一阶图像梯度计算,然后利用边缘白色连续像素点连续性、以及该白色连续像素点坐标位置的统计中位数计算,得到滑块缺口中心位置坐标,进而在滑块缺口位置标注矩形标注框,即为目标检测模型提供有监督的标签。
采用本实施例的方案,在滑块位移计算步骤,利用一种闭环有监督的目标检测模型深度学习方法,解决了对滑块识别供应商滑块图片特殊特征的依赖,也解决了有监督深度学习模型需要人工手动标注标签的问题。
在一个实施例中,上述根据针对性图像处理结果,计算滑块缺口中心位置坐标,具体如下:
(1)滑块图片特征使用RGBA的A信道,对该信道进行二值化得到滑块覆盖的像素点位,剔除其他像素得到滑块模板;
(2)将滑块缺口背景图片转换成int16格式,然后对水平和垂直方向分别进行差分计算,将负值赋值为0,然后将水平和垂直计算结果按照原图像大小叠加,得到滑块缺口特征图,进一步计算边缘连续像素的位置得到一个缺口中心位置(C_x1,C_y1);求图片的转移矩阵,再次进行上述计算得到缺口中心位置(C_x2,C_y2);
(3)在缺口特征图上匹配滑块模板,取匹配度最高的位置,得到另一个缺口中心位置(C_x0,C_y0);
(4)为进一步提升定位精确度,将以上2种途径计算所得的缺口位置和缺口大小进行组合,得到最终的滑块缺口中心位置坐标,具体计算方法为:
a)将缺口中心坐标设置为匹配模板计算的坐标输出(C_x0,C_y0);
b)判别模板匹配计算输出的匹配度数值,当匹配度数值小于设定阈值时,再判断缺口中心横坐标C_x0是否为空,若为空,则将缺口中心坐标设置为(C_x1,C_y2)作为最终输出结果;若不为空,则保留(C_x0,C_y0)作为缺口中心坐标最终的输出结果;其中,匹配度阈值的设置原则是保留匹配度排序的前5%。
在一个实施例中,上述滑块拖动轨迹建模与线下模型训练,如图3所示:
录取真人滑块拖动轨迹,并对滑块轨迹进行预处理;建立LSTM前端模型,学习滑块轨迹总位移与轨迹总耗时的关联关系特征,以及滑块轨迹的不均匀时间采样序列特征;建立改进的LSTM后端回归模型,以适应非均匀采样输入时序和可变长时序数据;对建立的LSTM前端模型、LSTM后端回归模型进行训练,用于生成滑块拖动轨迹时间序列。
在一个实施例中,上述滑块拖动轨迹建模与线下模型训练,采用的模型为LSTM,具体如下:
利用鼠标录屏软件进行真人滑块操作数据采集;
将采集到的数据进行预处理;
进行LSTM前端模型建模,包括两种方式:一种是采用基于统计学的独立模型,另一种是采用额外一层LSTM进行建模,且该额外一层LSTM与LSTM后端回归模型一起,进行反向传播模型参数学习;
建立改进的LSTM后端回归模型,通过修改网络架构和损失函数,生成不同位移距离、不同拖动时长的可变长滑块拖动轨迹。
采用本实施例的方案,在滑块轨迹生成步骤,利用经过特殊修改的LSTM模型为核心,统计学模型和轨迹平滑等辅助型算法技术,实现对人类滑块拖动行为的深度学习,进而随机生成含有人类滑块拖动本质特征的轨迹,最终获得滑块验证码的高识别通过率和高通过率稳定性。
在一个实施例中,上述将采集到的数据进行预处理,包括以下步骤:
从录制的鼠标轨迹中提取滑块点击、拖动和释放过程,并将数据格式转化为csv文本文件;
将鼠标移动绝对坐标转换成鼠标移动相对坐标,第一个点的坐标为(0,0);
将时间采样由系统绝对时钟周期转换成毫秒,第一个点的采样时间点为0毫秒;
统计数据集鼠标位移最大值和耗时最大值,并进行数据归一化。
在一个实施例中,上述进行LSTM前端模型建模,采用基于统计学的独立模型,具体如下:
利用Burr统计模型针对位移距离与拖动时长的关联关系进行建模,即该模型输出符合Burr模型的耗时总时长A,单位为毫秒;
针对采集到的真人滑块操作数据集,分析时间采样频率的统计学关系,建立模型用于生成时间采样序列;在该步骤中,首先采用舍选法进行时间序列非均匀采样点的选取,然后针对所选取采样点的具体采样数值,进行指定均值和方差的高斯随机数生成;最后将生成总耗时为A的非均匀采样时间序列,作为LSTM后端回归模型的输入。
在一个实施例中,上述进行LSTM前端模型建模,采用额外一层LSTM进行建模,且该额外一层LSTM与LSTM后端回归模型一起,进行反向传播模型参数学习,具体如下:
采用额外一层LSTM直接建立输入到输出非均匀采样时间序列的模型,该层LSTM的输入为位移距离与拖动时长,该层LSTM的全部time step输出作为LSTM后端回归模型的输入。
在一个实施例中,上述建立改进的LSTM后端回归模型,具体如下:
首先,LSTM模型输入强制带入实际时间序列长度,输出为全time step输出;
其次,在接入输出层前,加入一层dropout层,Dropout层与输出层使用全连接,损失函数定义为MSE,该函数经过修改,根据带入的实际时间序列长度信息,剔除zero-padding节点对MSE计算带来的干扰;
最后,输出层添加Leaky Relu激活函数,配合Adam优化器进行模型参数的反向传播学习。
第二部分、线上模型服务,包括以下步骤:
如图4所示,首先通过浏览器自动化技术访问目标网站,触发滑块验证码;
对屏幕进行截图,处理截图得到含有滑块图片和滑块缺口背景图片;
以滑块缺口背景图片为输入,执行已训练好的目标检测模型,得到滑块缺口中心位置坐标;结合滑块初始位置,计算得到滑块位移距离;
执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列;
根据滑块拖动轨迹时间序列,通过X服务器的XTEST接口或者Linux操作系统的鼠标事件文件,自动控制鼠标点击滑块、拖拽滑块、释放滑块到缺口位置,完成滑块验证码的自动识别。
在一个实施例中,上述根据滑块拖动轨迹时间序列,通过X服务器的XTEST接口或者Linux操作系统的鼠标事件文件,自动控制鼠标点击滑块、拖拽滑块、释放滑块到缺口位置之前,所述滑块验证码的自动识别方法还包括:调用滑块轨迹平滑模型,用于平滑生成的滑块拖动轨迹时间序列。
在一个实施例中,上述以滑块缺口背景图片为输入,执行已训练好的目标检测模型,得到滑块缺口中心位置坐标;结合滑块初始位置,计算得到滑块位移距离,公式如下:
其中,D表示滑块位移距离,x为滑块缺口中心位置横坐标,x0为滑块初始横坐标,Welm为目标检测模型输入图片的宽度,Wsnap为屏幕截图的宽度,以上变量的单位均为像素;
所述滑块初始位置为不定值时,采用template matching算法根据滑块本身,单独计算滑块初始位置坐标(x0,y0)。
在一个实施例中,上述执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列,结合图5,具体如下:
1)以滑块位移距离D为输入,执行在线下模型训练部分已训练好的LSTM前端模型,得到非均匀采样的时间序列t[n],单位为毫秒;
2)对时间序列t[n]进行预处理:包括零值填充(zero-padding)、归一化和数据维度转换;其中,归一化是指将t[n]的数值归一到[0,1]区间内;
3)以经过预处理的t[n]为输入,执行在线下模型训练部分已训练好的LSTM后端回归模型,得到初始滑块拖动轨迹时间序列(x[n],y[n],t[n]),其中x[n],y[n]分别表示在t[n]时刻滑块的中心位置横、纵坐标,单位为相对像素;
4)将初始滑块拖动轨迹时间序列(x[n]y[n],t[n])反归一化,将滑块的中心位置坐标单位转化成输入图片坐标域的像素点、将t[n]的单位转化为毫秒;
5)通过拉伸或压缩序列,对初始滑块拖动轨迹时间序列进行对齐处理,使得滑块拖动轨迹时间序列最终横坐标位置x[N]等于滑块位移距离D,其中N代表最后一个采样点;
6)将对齐处理后的滑块拖动轨迹时间序列数值近似为整数;
7)返回差分计算结果(x_t,y_t,t)作为最终的滑块拖动轨迹时间序列,其中差分计算具体为:x_t=x[n]–x[n-1],y_t=y[n]–y[n-1],t=t[n]–t[n-1]。
下面对本发明实施例中的技术方案进行清楚、完整地描述,当然,此处所描述的实例并非全部的实施例。在此处附图中描述和示出的本发明实施例的组件可以以各种不同的形式来布置和设计。因此,以下提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。
下面先对本发明所述的技术实施方案在Linux无头服务器上的线上部署与执行,进行详细叙述,后再对本发明涉及到的模型线下训练环境进行方案实施具体描述。
一、滑块验证码系统架构实施方案
1、在Linux服务器一次性上安装X11服务器、X11 dummy driver(虚拟显卡驱动)和X11 libinput驱动;
2、一次性安装libinput输入驱动;
3、编写特制的conf文件放入/etc/x11/xorg.conf.d/文件夹下;该conf文件用于描述桌面屏幕分辨率、DPI、色深等显示相关配置,也用于加载虚拟显卡驱动、真实输入驱动(鼠标+键盘),详细配置键盘和鼠标驱动参数;该配置同时用于过滤不必要的输入输出和驱动,以及禁用硬件加速等需要真实硬件的显示渲染引擎和内核库函数;
4、使用Xorg命令后台启动X服务器;
5、使用xhost命令开启X客户端访问权限,以支持X协议的客户端接入;
6、设置采用Unix端口形式的DISPLAY参数,(注:也可采用X协议支持的其他传输机制);
7、启动滑块验证码应用程序开始自动识别验证码。
采用本实施例上述的通用式的系统架构设计,该架构解决了传统滑块验证码识别技术的系统架构瓶颈,即其技术不再受到滑块前端页面特制控件、http传输协议加密的限制,实现了系统技术架构的创新。同时,该架构实现了在无物理鼠标硬件情况下,加载真实的鼠标Linux内核驱动,消除了程序对鼠标控制与真人对鼠标控制的差异性,提高了系统拟人拖动鼠标的鲁棒性,进而提高滑块识别通过率。
二、滑块验证码应用程序实施方案
1、配置Selenium的webdriver参数,具体为浏览器窗口大小和窗口启动位置坐标。在本实施例中,具体采用的网页浏览器为Chrome浏览器,在root权限下需使用—no-sandbox参数。同时,由于使用的虚拟显卡,因此使用—disable-gpu禁用GPU加速而使用软件渲染。
2、通过Selenium框架启动浏览器,浏览器将在X服务器内运行。
3、通过对浏览器的元素与控件控制,进入目标网站。具体元素、CSS、class根据网站不同而不同。
4、获取滑块验证码屏幕截图。
5、根据滑块验证码窗口位置只截取滑块和含有滑块缺口背景的图片。
6、执行线下已训练好的目标检测模型,该模型将输出滑块中心位置坐标(x,y),以及对应的矩形框bbox坐标(x_left,y_left,w,h)。
7、定位初始滑块位置。该步骤为可选,多数验证码滑块初始位置为定值,针对不定值的滑块初始位置可采用template matching算法搜索滑块按钮位置坐标(x0,y0),其中x0用于滑块位移计算。
9、生成滑块拖动轨迹,该步骤可细分为如下几个环节,如图5所示:
(9.1)生成时间采样序列,本实施案例执行在线下模型训练环节已训练好的模型,载入其参数,得到非均匀采样时间序列;
(9.2)LSTM模型输入预处理,包括zero-padding、归一化和数据维度转换;
(9.3)执行LSTM模型,得到生成的滑块拖动轨迹(x_t,y_t)序列;
(9.4)(x_t,y_t,t)序列反归一化;
(9.5)轨迹对齐处理,确保轨迹最终位置为滑块缺口位置,必要时拉伸和压缩序列;
(9.6)将序列数值近似为整数;
(9.7)返回差分计算结果;
10、调用滑块轨迹平滑模型,用于平滑生成的滑块轨迹序列。轨迹序列平滑处理,本实施例采用的是tweening函数,也可以使用其他差值函数,该步骤与训练集数据采样周期相关,为可选步骤。本实施例中使用了轨迹平滑处理,以提高识别通过率。
11、利用事件文件或XTEST接口模拟鼠标操作,完成滑块按钮的点击、拖动和释放,完成滑块验证码的自动识别。
下面对本专利涉及到的算法模型线下训练实施方案具体描述。本专利涉及2个模型训练:滑块缺口位置定位模型和滑块拖动轨迹生成模型。
三、滑块缺口位置定位模型
该模型的线下训练步骤如图2所示,其具体的深度学习模型为YOLO,但是也可以使用SSD等其他深度学习模型。作为模型的实际输入,含有滑块缺口的背景图片经过通用图像处理模块,转化为单色灰度图,继而进行直方图均衡处理,并进行归一化使图像像素亮度在[0,1]区间内。
图2为给模型自动打标签的处理流程,根据具体滑块验证码图片,对含有滑块缺口的背景图片进行特定处理,随厂商的不同而不同。结合图2所示步骤,本实施例中,在针对性图像处理环节,采用了灰度变换、ROI限制、以及例如Ostu的multi-level二值化等算法;在滑块缺口位置定位环节,采用了一阶图像梯度计算,然后利用其边缘白色连续像素点连续性、以及其坐标位置的统计中位数计算,得到滑块缺口中心位置坐标,进而可实现对滑块缺口位置的矩形框标注(bbox),为目标检测模型自动提供标签用于闭环有监督训练。
滑块缺口位置定位的具体步骤包括:
1、通过屏幕截取方式获得滑块缺口背景图片和滑块图片
2、使用针对性、通用性的图像处理算法对图片分别进行处理;有针对性的图像处理结果用于后续的滑块缺口位置自动标注步骤,即为目标检测模型提供有监督的标签;通用性图像处理结果则用于目标检测的模型输入,包括缩放图片至固定大小,像素值均衡化操作。现有的计算方法,比如,利用滑块背景有缺口和无缺口图片的计算方式在此环节使用,便于自动标签标注过程。
3、在标签自动标注条线下,有滑块缺口定位算法步骤,用于计算滑块缺口中心位置坐标;得出滑块缺口中心位置坐标后,可计算出其矩形标注框位置(bounding box),用于目标检测有监督模型的训练;
为了便于理解本发明的方案,以下通过一个具体示例进行说明。
以腾讯滑块验证码测试为例。结合图2的标签自动标注条线,本发明同时利用了滑块图片特定特征、滑块缺口背景图片特定特征、以及滑块图片与滑块缺口图片的形状关联特征,构建了滑块缺口定位算法,可以准确的识别滑块缺口的位置并进行标注:
(1)滑块图片特征使用RGBA的A信道,对该信道进行二值化得到滑块覆盖的像素点位,剔除其他像素得到滑块模板;
(2)将滑块缺口背景图片转换成int16格式,然后对水平和垂直方向分别进行差分计算,将负值赋值为0,然后将水平和垂直计算结果按照原图像大小叠加,得到滑块缺口特征图,进一步计算边缘连续像素的位置得到一个缺口中心位置(C_x1,C_y1);求图片的转移矩阵,再次进行上述计算得到缺口中心位置(C_x2,C_y2);
(3)在缺口特征图上匹配滑块模板,取匹配度最高的位置,得到另一个缺口中心位置(C_x0,C_y0);
(4)为进一步提升定位精确度,将以上2种途径计算所得的缺口位置和缺口大小进行组合,得到最终的滑块缺口中心位置坐标,具体计算方法为:
a)将缺口中心坐标设置为匹配模板计算的坐标输出(C_x0,C_y0);
b)判别模板匹配计算输出的匹配度数值,当匹配度数值小于设定阈值时,再判断缺口中心横坐标C_x0是否为空,若为空,则将缺口中心坐标设置为(C_x1,C_y2)作为最终输出结果;若不为空,则保留(C_x0,C_y0)作为缺口中心坐标最终的输出结果;其中,匹配度阈值的设置原则是保留匹配度排序的前5%。
(5)目标检测模型训练完毕后,将可以输出滑块缺口的中心位置坐标和矩形标注框,示例输出如图6、图7所示,根据该两幅图可以看出滑块定位效果较好。
采用本实施例上述的滑块缺口位置定位算法,通用深度学习目标检测使算法真正学习到滑块位置识别的本质特征,实现了一个算法支持多个不同滑块验证码供应商的识别能力,实现了自动化标签标注的闭环系统,无需人工介入和标注数据。
四、滑块拖动轨迹生成模型
该模型的线下训练步骤如图3所示,具体的深度学习模型为LSTM:
1、利用鼠标录屏软件(例如Mouse Controller)进行真人滑块操作数据采集;然后将采集到的数据进行预处理,具体有如下几步:
(1)从录制的鼠标轨迹中提取滑块点击、拖动和释放过程,并将数据格式转化为csv文本文件;
(2)将鼠标移动绝对坐标转换成鼠标移动相对坐标,第一个点的坐标为(0,0);
(3)将时间采样由系统绝对时钟周期转换成毫秒,第一个点的采样时间点为0毫秒;
(4)统计数据集鼠标位移最大值和耗时最大值,并进行数据归一化。
2、建立数学模型学习轨迹总位移与轨迹总耗的关联关系特征
3、建立数学模型学习录制轨迹的不均匀时间采样序列特征,如图3(注:步骤2和步骤3可视为LSTM前端模型,步骤2和步骤3也可混合成一个模型)。
步骤2和步骤3是LSTM前端模型,可以统一以LSTM建模,也可以单独建模。LSTM建模为加入单独一层全输出LSTM层,以位移距离作为单个输入;单独建模则是建立2个串联统计模型,第一个模型以位移距离为输入,输出拖动总耗时,如图8所示,根据人工拖动滑块耗时与滑块位移距离的关系,可使用线下统计模型实现对轨迹耗时的拟人模拟。第二个模型以总耗时为输入,时间采样序列为输出,如图9所示,显示了非均匀采样点出现在人工录制轨迹中的概率,比如采样点在500毫秒出现的概率约为50%。利用此信息,可实现非均匀采样模型,从而制作时间序列随机生成器,用于生成符拟人的轨迹时间序列。
这里描述2种具体实施方案,2个方案的不同点在于方案1为基于统计学的独立模型,不参与后端LSTM反向传播模型参数学习;方案2则是利用额外一层LSTM进行建模,该层与后端LSTM模型一起,进行反向传播模型参数学习。
①LSTM前端实施方案1
结合图3,该方案首先利用Burr统计模型针对位移距离与拖动耗时的关联关系进行建模,即该模型输出符合Burr模型的耗时总时长A,单位为毫秒。
其次,针对采集到的真人滑块拖动数据集,分析其时间采样频率的统计学关系,建立模型用于生成时间采样序列。在该步骤中,首先采用舍选法(Acceptance-RejectionMethod)进行时间序列非均匀采样点的选取,然后针对已被确定选取的采样点,对该采样点的具体采样数值(单位为毫秒),进行指定均值和方差的高斯随机数生成。该步骤最后将生成非均匀采样时间序列(该序列的总耗时为A),作为LSTM后端模型的输入。
②LSTM前端实施方案2
该实施方案利用一层LSTM,直接建立输入(位移距离,耗时时长),到输出非均匀采样时间序列的模型。该LSTM层的全部time step输出将作为LSTM后端的输入,time step数为55,不足补零。
结合图3,LSTM回归模型采用Tensorflow框架编写,其网络架构和损失函数经过定制修改以适应滑块验证码识别应用中,对不同位移距离、不同拖动时长的可变长滑块拖动轨迹的生成。首先,LSTM模型输入强制带入实际时间序列长度,输出为全time step输出;其次,在接入输出层前,加入一层dropout层。Dropout层与输出层使用全连接(fullyconnected),损失函数定义为MSE,该函数经过修改,根据带入的实际时间序列长度信息,剔除zero-padding节点对MSE计算带来的干扰;最后,输出层添加Leaky Relu激活函数,配合Adam优化器进行模型参数的反向传播学习。
4、建立经过修改的LSTM后端回归模型,该模型可适应非均匀采样输入时序和可变长时序数据.
5、训练该模型用于生成滑块轨迹序列,一个拟人滑块拖动轨迹生成示例如图10所示,根据图10可知机器生成的滑块轨迹与人类真实的滑块轨迹相比,近似度较高。
采用本实施例上述的基于LSTM模型的滑块轨迹生成算法,该算法通过深度学习,结合轨迹生成后的平滑函数处理,实现了拟人滑块轨迹的随机生成。该算法与传统滑块轨迹生成算法的最大区别在于,该算法在达到高识别通过率的同时,可以保证其通过率不随测试数量的增多而下降。
本实施例通过上述优点的有效结合,实现了对滑块验证码的高识别通过率和高通过率稳定性。本专利的技术根本性的解决了滑块验证码识别这一图灵动态感知游戏测试问题,其技术效果不受滑块验证码厂商具体滑块页面控件编写方式、网页应用前后端加密和传输方式的影响,可达到95%以上的滑块识别通过率且不随测试数量的增加而衰减。
此外,在一个实施例中,还提供了一种服务器,所述服务器包括:存储器、处理器及存储在所述存储器上,并可在所述处理器上运行的滑块验证码的自动识别程序,所述滑块验证码的自动识别程序配置为实现以下步骤:
线下模型训练:
滑块缺口位置定位建模与线下模型训练:构建基于深度学习的目标检测模型,根据滑块缺口背景图片计算滑块缺口中心位置坐标,并标注矩形标注框,进行有监督的目标检测模型训练;
滑块拖动轨迹建模与线下模型训练:根据真人滑块拖动轨迹,建立LSTM前端模型,以及适应非均匀采样输入时序和可变长时序数据的LSTM后端回归模型,对建立的LSTM前端模型、LSTM后端回归模型进行训练;
线上模型服务:
通过浏览器自动化技术访问目标网站,触发滑块验证码;
对屏幕进行截图,处理截图得到含有滑块图片和滑块缺口背景图片;
以滑块缺口背景图片为输入,执行已训练好的目标检测模型,得到滑块缺口中心位置坐标;结合滑块初始位置,计算得到滑块位移距离;
执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列;
根据滑块拖动轨迹时间序列,通过X服务器的XTEST接口或者Linux操作系统的鼠标事件文件,自动控制鼠标点击滑块、拖拽滑块、释放滑块到缺口位置,完成滑块验证码的自动识别。
在一个实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有滑块验证码的自动识别程序,所述滑块验证码的自动识别程序被处理器执行时实现以下步骤:
线下模型训练:
滑块缺口位置定位建模与线下模型训练:构建基于深度学习的目标检测模型,根据滑块缺口背景图片计算滑块缺口中心位置坐标,并标注矩形标注框,进行有监督的目标检测模型训练;
滑块拖动轨迹建模与线下模型训练:根据真人滑块拖动轨迹,建立LSTM前端模型,以及适应非均匀采样输入时序和可变长时序数据的LSTM后端回归模型,对建立的LSTM前端模型、LSTM后端回归模型进行训练;
线上模型服务:
通过浏览器自动化技术访问目标网站,触发滑块验证码;
对屏幕进行截图,处理截图得到含有滑块图片和滑块缺口背景图片;
以滑块缺口背景图片为输入,执行已训练好的目标检测模型,得到滑块缺口中心位置坐标;结合滑块初始位置,计算得到滑块位移距离;
执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列;
根据滑块拖动轨迹时间序列,通过X服务器的XTEST接口或者Linux操作系统的鼠标事件文件,自动控制鼠标点击滑块、拖拽滑块、释放滑块到缺口位置,完成滑块验证码的自动识别。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种用于滑块验证码自动识别的系统架构,其特征在于,包括网页浏览器、浏览器自动化测试框架即Selenium、Linux的图形显示服务器即X服务器、X服务器虚拟显卡驱动、真实输入输出驱动、X服务器的封装驱动、X服务器配置文件、滑块识别应用程序模块,其中:
Selenium,用于滑块识别应用程序模块对网页浏览器的自动化控制;
X服务器,用于实现虚拟桌面,支持无头服务器部署,并支持滑块识别应用程序对虚拟鼠标光标的控制操作;
X服务器的封装驱动,用于X服务器在启动时通过Linux内核动态加载真实输入输出驱动;
X服务器配置文件,用于配置X服务器,定义虚拟桌面参数,动态加载真实输入输出驱动、配置虚拟鼠标相关参数,以及配置相关虚拟显卡设置;
滑块识别应用程序模块,用于配置网页浏览器启动选项、加载Selenium框架,并运行滑块识别算法,得到鼠标轨迹序列,通过XTEST接口或者鼠标事件文件控制鼠标点击、拖拽、释放滑块到缺口位置;
所述滑块识别应用程序模块中,滑块识别算法具体包括以下单元:
模型训练单元,用于滑块缺口位置定位建模与线下模型训练,滑块拖动轨迹建模与线下模型训练;
滑块验证码触发单元,用于访问目标网站,触发滑块验证码;
屏幕截图单元,用于对屏幕进行截图,得到含有滑块图片和滑块缺口背景图片;
滑块位移距离计算单元,用于执行已训练好的目标检测模型,得到滑块缺口中心位置坐标,并计算得到滑块位移距离;
滑块拖动轨迹序列计算单元,用于执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹序列即鼠标轨迹序列;
鼠标操作控制单元,用于根据滑块拖动轨迹序列,控制鼠标点击、拖拽、释放到滑块缺口位置,完成滑块验证码的自动识别;
上述执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列,具体如下:
1)以滑块位移距离D为输入,执行在线下模型训练部分已训练好的LSTM前端模型,得到非均匀采样的时间序列t[n],单位为毫秒;
2)对时间序列t[n]进行预处理:包括零值填充(zero-padding)、归一化和数据维度转换;其中,归一化是指将t[n]的数值归一到[0,1]区间内;
3)以经过预处理的t[n]为输入,执行在线下模型训练部分已训练好的LSTM后端回归模型,得到初始滑块拖动轨迹时间序列(x[n],y[n],t[n]),其中x[n],y[n]分别表示在t[n]时刻滑块的中心位置横、纵坐标,单位为相对像素;
4)将初始滑块拖动轨迹时间序列(x[n]y[n],t[n])反归一化,将滑块的中心位置坐标单位转化成输入图片坐标域的像素点、将t[n]的单位转化为毫秒;
5)通过拉伸或压缩序列,对初始滑块拖动轨迹时间序列进行对齐处理,使得滑块拖动轨迹时间序列最终横坐标位置x[N]等于滑块位移距离D,其中N代表最后一个采样点;
6)将对齐处理后的滑块拖动轨迹时间序列数值近似为整数;
7)返回差分计算结果(x_t,y_t,t)作为最终的滑块拖动轨迹时间序列,其中差分计算具体为:x_t=x[n]–x[n-1],y_t=y[n]–y[n-1],t=t[n]–t[n-1]。
2.根据权利要求1所述的用于滑块验证码自动识别的系统架构,其特征在于,所述网页浏览器为Chrome浏览器或Firefox浏览器,或支持Web Driver API的其他网页浏览器。
3.根据权利要求1所述的用于滑块验证码自动识别的系统架构,其特征在于,游览器控制框架Selenium提供网页浏览器的API接口,使得网页浏览器能够被程序软件控制。
4.根据权利要求1所述的用于滑块验证码自动识别的系统架构,其特征在于,Selenium安装的库函数与滑块识别应用程序模块所使用的编程语言对应,使得通过该语言编写的滑块识别应用程序模块能够访问网页浏览器,并控制网页浏览器的操作。
5.根据权利要求1所述的用于滑块验证码自动识别的系统架构,其特征在于,所述X服务器配置文件,还用于无头服务headless mode的配置与部署,包括XTEST支持、鼠标驱动、显示器分辨率、DPI配置和键盘配置。
6.一种用于滑块验证码自动识别的系统架构实现方法,其特征在于,步骤如下:
步骤1、安装需要使用的网页浏览器;
步骤2、安装Selenium的浏览器驱动程序,该驱动程序提供网页浏览器的控制接口,使得网页浏览器能够被自动化控制;
步骤3、根据使用的编程语言选择对应的Selenium库函数安装,使得通过该语言编写的滑块识别应用程序模块能够访问网页浏览器,以及控制网页浏览器操作;
步骤4、安装X服务器;
步骤5、安装X服务器虚拟显卡驱动;
步骤6、安装真实输入输出驱动,以及X服务器的封装驱动,使X服务器在启动时通过Linux内核动态加载真实输入输出驱动;
步骤7、加载X服务器配置文件:该配置文件需事先编写好,用于配置X服务器,定义虚拟桌面参数,同时加载真实输入输出驱动、配置鼠标相关参数,该配置文件还需配置相关显卡设置,以及扩展接口相关设置,并打开XTEST支持;
步骤8、启动X服务器;
步骤9、开启X客户端接入权限;
步骤10、设置X协议通信方式;
步骤11、启动滑块识别应用程序模块,控制鼠标点击、拖拽、释放滑块到缺口位置,所述滑块识别应用程序模块中,滑块识别算法具体包括以下单元:
模型训练单元,用于滑块缺口位置定位建模与线下模型训练,滑块拖动轨迹建模与线下模型训练;
滑块验证码触发单元,用于访问目标网站,触发滑块验证码;
屏幕截图单元,用于对屏幕进行截图,得到含有滑块图片和滑块缺口背景图片;
滑块位移距离计算单元,用于执行已训练好的目标检测模型,得到滑块缺口中心位置坐标,并计算得到滑块位移距离;
滑块拖动轨迹序列计算单元,用于执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹序列即鼠标轨迹序列;
鼠标操作控制单元,用于根据滑块拖动轨迹序列,控制鼠标点击、拖拽、释放到滑块缺口位置,完成滑块验证码的自动识别;
上述执行已训练好的LSTM前端模型,以及LSTM后端回归模型,得到滑块拖动轨迹时间序列即鼠标移动轨迹序列,具体如下:
1)以滑块位移距离D为输入,执行在线下模型训练部分已训练好的LSTM前端模型,得到非均匀采样的时间序列t[n],单位为毫秒;
2)对时间序列t[n]进行预处理:包括零值填充(zero-padding)、归一化和数据维度转换;其中,归一化是指将t[n]的数值归一到[0,1]区间内;
3)以经过预处理的t[n]为输入,执行在线下模型训练部分已训练好的LSTM后端回归模型,得到初始滑块拖动轨迹时间序列(x[n],y[n],t[n]),其中x[n],y[n]分别表示在t[n]时刻滑块的中心位置横、纵坐标,单位为相对像素;
4)将初始滑块拖动轨迹时间序列(x[n]y[n],t[n])反归一化,将滑块的中心位置坐标单位转化成输入图片坐标域的像素点、将t[n]的单位转化为毫秒;
5)通过拉伸或压缩序列,对初始滑块拖动轨迹时间序列进行对齐处理,使得滑块拖动轨迹时间序列最终横坐标位置x[N]等于滑块位移距离D,其中N代表最后一个采样点;
6)将对齐处理后的滑块拖动轨迹时间序列数值近似为整数;
7)返回差分计算结果(x_t,y_t,t)作为最终的滑块拖动轨迹时间序列,其中差分计算具体为:x_t=x[n]–x[n-1],y_t=y[n]–y[n-1],t=t[n]–t[n-1]。
7.根据权利要求6所述的用于滑块验证码自动识别的系统架构实现方法,其特征在于,步骤10所述X协议通信方式,具体为:客户端即滑块识别应用程序模块使用Unix端口与X服务器进行通信。
8.根据权利要求6所述的用于滑块验证码自动识别的系统架构实现方法,其特征在于,步骤11所述启动滑块识别应用程序模块,具体包括:
配置web浏览器启动选项;
加载Selenium框架;
运行滑块识别应用程序模块,得到鼠标轨迹序列;
根据鼠标轨迹序列,通过XTEST接口或者鼠标事件文件控制鼠标点击、拖拽、释放到滑块缺口位置。
9.根据权利要求8所述的用于滑块验证码自动识别的系统架构实现方法,其特征在于,在加载Selenium框架之前,还包括如下步骤:配置额外鼠标驱动选项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911187482.5A CN111310155B (zh) | 2019-11-28 | 2019-11-28 | 一种用于滑块验证码自动识别的系统架构及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911187482.5A CN111310155B (zh) | 2019-11-28 | 2019-11-28 | 一种用于滑块验证码自动识别的系统架构及实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111310155A CN111310155A (zh) | 2020-06-19 |
CN111310155B true CN111310155B (zh) | 2022-08-19 |
Family
ID=71160070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911187482.5A Active CN111310155B (zh) | 2019-11-28 | 2019-11-28 | 一种用于滑块验证码自动识别的系统架构及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111310155B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112016077B (zh) * | 2020-07-14 | 2024-03-12 | 北京淇瑀信息科技有限公司 | 一种基于滑动轨迹模拟的页面信息获取方法、装置和电子设备 |
CN111935106B (zh) * | 2020-07-23 | 2022-05-13 | 湖北工业大学 | 一种利用改进验证码收集带标签的数据集的方法 |
CN114327318A (zh) * | 2020-09-30 | 2022-04-12 | 中兴通讯股份有限公司 | 云桌面的显示方法和系统 |
CN112367302B (zh) * | 2020-10-20 | 2023-07-18 | 北京空间飞行器总体设计部 | 一种适用于chrome浏览器的身份认证方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395594A (zh) * | 2017-07-21 | 2017-11-24 | 华东师范大学 | 一种拖拽验证码的自动识别方法 |
CN107729729A (zh) * | 2017-09-18 | 2018-02-23 | 北京知道未来信息技术有限公司 | 一种基于随机森林的滑动验证码的自动通过测试方法 |
CN108985041A (zh) * | 2018-05-17 | 2018-12-11 | 厦门二五八网络科技集团股份有限公司 | 一种基于滑动验证的验证码识别输入方法及系统 |
CN110009057A (zh) * | 2019-04-16 | 2019-07-12 | 四川大学 | 一种基于深度学习的图形验证码识别方法 |
CN110276041A (zh) * | 2019-07-01 | 2019-09-24 | 浪潮卓数大数据产业发展有限公司 | 一种基于谷歌浏览器插件的网页数据获取方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170173262A1 (en) * | 2017-03-01 | 2017-06-22 | François Paul VELTZ | Medical systems, devices and methods |
CN109086594A (zh) * | 2018-09-21 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种实现滑动型验证码验证的方法、装置及系统 |
CN109902471A (zh) * | 2019-01-08 | 2019-06-18 | 平安科技(深圳)有限公司 | 滑块验证的检测方法、装置、计算机设备及存储介质 |
-
2019
- 2019-11-28 CN CN201911187482.5A patent/CN111310155B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395594A (zh) * | 2017-07-21 | 2017-11-24 | 华东师范大学 | 一种拖拽验证码的自动识别方法 |
CN107729729A (zh) * | 2017-09-18 | 2018-02-23 | 北京知道未来信息技术有限公司 | 一种基于随机森林的滑动验证码的自动通过测试方法 |
CN108985041A (zh) * | 2018-05-17 | 2018-12-11 | 厦门二五八网络科技集团股份有限公司 | 一种基于滑动验证的验证码识别输入方法及系统 |
CN110009057A (zh) * | 2019-04-16 | 2019-07-12 | 四川大学 | 一种基于深度学习的图形验证码识别方法 |
CN110276041A (zh) * | 2019-07-01 | 2019-09-24 | 浪潮卓数大数据产业发展有限公司 | 一种基于谷歌浏览器插件的网页数据获取方法及系统 |
Non-Patent Citations (2)
Title |
---|
[Python3 网络爬虫开发实战] 8.2 - 极验滑动验证码的识别;崔庆才等;《网页在线公开:https://cuiqingcai.com/7037.html》;20190802;第1-11页 * |
STOCK PRICE PREDICTION USING LSTM,RNN AND CNN-SLIDING WINDOW MODEL;Sreelekshmy Selvin等;《网页在线公开:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8126078》;20171204;第1-5页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111310155A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310155B (zh) | 一种用于滑块验证码自动识别的系统架构及实现方法 | |
CN111309222B (zh) | 一种滑块验证码的滑块缺口定位及拖动轨迹生成方法 | |
CN111310156B (zh) | 一种滑块验证码的自动识别方法及系统 | |
US20200167161A1 (en) | Synthetic depth image generation from cad data using generative adversarial neural networks for enhancement | |
CN109684803B (zh) | 基于手势滑动的人机验证方法 | |
CN109145759B (zh) | 车辆属性识别方法、装置、服务器及存储介质 | |
CN108635861B (zh) | 控制应用中车辆的方法、装置、设备及存储介质 | |
CN112819686B (zh) | 基于人工智能的图像风格处理方法、装置及电子设备 | |
CN111709406B (zh) | 文本行识别方法及装置、可读存储介质、电子设备 | |
CN109783360A (zh) | 操作系统对比测试方法与装置、电子设备、存储介质 | |
US20220366244A1 (en) | Modeling Human Behavior in Work Environment Using Neural Networks | |
CN110163241A (zh) | 数据样本生成方法、装置、计算机设备及存储介质 | |
Wu | Expression recognition method using improved VGG16 network model in robot interaction | |
CN117132763A (zh) | 电力图像异常检测方法、装置、计算机设备和存储介质 | |
CN114639152A (zh) | 基于人脸识别的多模态语音交互方法、装置、设备及介质 | |
CN116704581A (zh) | 人脸识别方法、装置、设备及存储介质 | |
KR20230096901A (ko) | 자율 주행 차량의 학습을 위한 데이터 증식 방법 및 그를 위한 장치 | |
CN113657453B (zh) | 基于生成对抗网络和深度学习的有害网站的检测方法 | |
CN115766090A (zh) | 一种多特征融合神经网络网络安全检测方法 | |
KR102348368B1 (ko) | 머신러닝 모델의 학습 데이터 생성과 머신러닝 모델을 이용한 유사 이미지 생성을 위한 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체 | |
Salim et al. | Learning Rate Optimization for Enhanced Hand Gesture Recognition using Google Teachable Machine | |
US20220058530A1 (en) | Method and device for optimizing deep learning model conversion, and storage medium | |
JP2024536252A (ja) | 計算効率が改善された画像処理のためのカスケード式多重解像度機械学習 | |
CN112346126A (zh) | 低级序断层的识别方法、装置、设备及可读存储介质 | |
CN113806236B (zh) | 一种移动测试领域云真机一机多控的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |