【验证码系列】Google验证码从数据训练到机器自动识别算法构建

news2024/12/27 17:56:33

文章目录

  • 1. 写在前面
  • 2. CSCI级设计决策
    • 2.1. Google验证码突防关联
    • 2.2. Google验证码突防行为设计决策
  • 3. Google验证码突防体系结构设计
    • 3.1. Google验证码突防部件
      • 3.1.2. Google验证码突防组成
    • 3.2. Google验证码突防软件
      • 3.2.1. Google验证码突防软件体系结构
      • 3.2.2. Google验证码突防软件开放的公用类
  • 3.3. Google验证码突防软件对象交互
    • 3.3.1. Google验证码突防软件交互
  • 4. 核心算法设计细节
    • 4.1. 算法目标
    • 4.2. 主要算法模块说明
    • 4.3. 图像区域位置识别算法
    • 4.4. 物体检测算法
    • 4.5. 特定目标分辨算法
    • 4.6. 目标主区域分类算法
  • 5. 训练数据说明

1. 写在前面

  为了研究机器人是否能够比人类更好地解决基于图像的验证码问题,我们构建了一套真正的验证码识别解决方案,请先看下面视频与截图:

Google验证码突防

在这里插入图片描述

主要由2个模块组成:突破模块算法模块。这些模块相互作用,形成一个完全在线和完全自动化的系统,打破谷歌基于图像的验证码服务reCAPTCHAV2

这篇文章主要是对Google验证码突防软件的功能和作用进行一个描述以及Google验证码突防系统的结构,还有接口规格说明和算法细节设计

如下是模块交互的工作流程:

在这里插入图片描述


2. CSCI级设计决策

2.1. Google验证码突防关联

在这里插入图片描述

1、用户:Google验证码突防软件使用者
2、接口服务器:接收用户数据并返回突防结果
3、Google验证码突防模拟器:获取待检测数据,根据检测结果进行突防,并将突防结果返回
4、Google验证码检测算法:对待检测Google验证码进行检测

2.2. Google验证码突防行为设计决策

  Google验证码接口服务器主要完成数据传输任务,在用户和Google验证码突防模拟器之间传输Google验证码的网址和突防结果

Google验证码突防模拟器主要工作为:

  • 据接口服务器提供的url获取Google验证码图像数据及图像数据对应的标签、模式、类型
  • 获取算法模块的检测结果,然后模拟人工做相应点击操作
  • 获取Google验证码突防状态码,并将结果返回到接口服务器

Google验证码检测算法主要功能主要是对突防模拟器提供的Google验证码图像数据进行识别检测,并将检测结果返回突防模拟器,突防用例如下如所示:

在这里插入图片描述

3. Google验证码突防体系结构设计

3.1. Google验证码突防部件

3.1.2. Google验证码突防组成

构成Google验证码突防的所有部件如下图所示:
在这里插入图片描述

  • FlaskServer
      该模块接收用户输入的url及id返回验证突防结果
  • PyppeteerEmulator
      该模块对需要突防验证的网站进行突防,并将突防结果返回给FlaskServer服务
  • CReaptchaBreak
      根据PyppeteerEmulator模块提供的参数文件和图片数据进行目标检测,将检测结果返回给PyppeteerEmulator模块
  • CDetector
      该模块主要实现对于实体目标进行位置和大小的检测,采用 512x512 Single Shot MultiBox Detector 深度学习算法,为了加强检测成功率,通过金字塔模式增强其检测成功率
  • CClassifier
      该模块由多个分类器组成,分别针对于不同的认知目标进行判别,采用类ResNet 多个网络结构的深度学习算法,该算法在特别针对于每种目标进行了优化

3.2. Google验证码突防软件

3.2.1. Google验证码突防软件体系结构

Google验证码突防软件体系结构图如下所示:
在这里插入图片描述

3.2.2. Google验证码突防软件开放的公用类

  • FlaskServer
      该模块主要包括两部分,一部分接受用户输入的url及id,以此判断进行验证的类型,另一部分调用PyppeteerEmulator
    模块进行验证,并将验证突防结果返回给用户

  • PyppeteerEmulator
      该模块对需要突防验证的网站进行获取验证图像、获取图像检测返回结果、根据返回结果对网页进行相应点击操作等一系列行为,对网站进行验证突防,并将突防结果返回给FlaskServer服务

  • CReaptchaBreak
      该模块会等待PyppeteerEmulator模块提供参数文件和图片数据,若参数文件存在,则根据参数文件中的信息,对图片文件进行目标检测,并将检测结果返回给PyppeteerEmulator模块

  • CDetector
      该算法模块主要实现对于实体目标进行位置和大小的检测,采用 512x512 Single Shot MultiBox Detector 深度学习算法,为了确定目标的存在及其在图像中的位置,目标检测模型从一组带标签的训练图像中学习。检测对象的目标位置通常用边界框来描述。边界框是一个矩形框,通常由左上角的 x 轴和y 轴坐标以及矩形右下角的x 轴和 y 轴坐标定义。在SSD目标检测网络中,我们虽然采用多尺度特征图的方式来保证能够检测到不同大小的物体,但是有些目标在图像中因为过大或者过小,会造成目标漏检,因此为进一步加强检测成功率,我们还对图像通过“金字塔模式”进行不同尺度的缩放后拼成一张 512x512 大图送入目标检测网络,该策略主要用于动态验证码。在我们的实验中,我们发现 SSD与其他检测系统相比,在保持几乎相似的检测性能的同时,速度较快。SSD提取了不同尺度的特征图来做检测,CNN网络一般前面的特征图比较大,后面逐渐采用 stride=2 的卷积或者pooling 层来降低特征图大小。一个比较大的特征图和比较小的特征图都用来做检测,这样做的好处就是比较大的特征图用来检测相对比较小的的目标,而小的特征图负责用来检测大的物体

  • CClassifier
      该算法有多个分类器,采用类 ResNet网络结构的深度学习算法组成,分别针对不同的认知目标进行判别。我们通过实验统计发现,reCaptcha突破还有几个出现频率较高的对象,如:人行横道、楼梯、烟囱、山,为弥补SSD目标检测算法在目标类别丰富度上的缺陷,并且针对小轿车、自行车和公交车等较小目标机器无法识别但肉眼可见的情况,我们再特别针对这 7 种目标进行优化

3.3. Google验证码突防软件对象交互

3.3.1. Google验证码突防软件交互

  开启一次突破,PyppeteerEmolator勾选我不是机器人选框后对出现的验证码页面进行数据获取,并把数据发送给CRecapthaBreak模块,该模块会根据验证码的类型(3X3和4X4)执行对应的目标检测。最后将验证突破结果层级返回到用户

Google验证码3X3交互图如下所示:

在这里插入图片描述

Google验证码4X4交互图如下所示:

在这里插入图片描述

Google验证码突防软件接收到用户传输的信息后,突防软件交互模块根据PyppeteerEmulator获取到的URL截取图片及图片信息,将其传递给CReaptchaBreak模块进行目标检测,并返回结果通过PyppeteerEmulator进行模拟点击和验证,最后将验证结果返回给用户

对象
Google验证服务FlaskServer
模拟浏览器PyppeteerEmulator
验证码破防器CReaptchaBreak

4. 核心算法设计细节

4.1. 算法目标

  验证码从诞生之日起,就被广泛地运用在阻止攻击者的不合法操作上。尽管验证码能在一定程度上拦截攻击者,但是在经济利益的驱动下,各种针对验证码的自动化攻击方式层出不穷,验证码服务也相应地做出改进。然而最近,出现了一种针对文本验证码的通用攻击方式。Google也适时地公布了reCaptcha的最新版本。最新版本有双重目标:一是减少合法用户通过验证码认证的成本,二是提供了对计算机来说,比文本识别更具挑战性的验证码。ReCaptcha是由一个“高级的风险分析系统”驱动的,这种系统能分析收到的请求,并挑出适合难度的验证码返回给用户。用户可能需要勾选一个checkbox,或者需要挑出描述相同内容的一组图片。Google提供的reCaptcha服务是使用最广泛的验证码服务,许多主流网站都用它来拦截自动化机器的不合法攻击。我们的目标就是让机器模拟人的模式去突破Google的reCaptcha验证码

在这里插入图片描述

我们首先对reCaptcha v2进行了整体性的研究。通过分析,我们整个验证流程分解为多次图像问答的模式, 这样使得图灵验证问题转化为图像的识别问题。在此基础上, 我们再通过场景, 将问题进行分类, 分而治之。 我们通过大量的人工实测实验,评估了reCAPTCHAV2的图像问答问题中图像的形式和类别以及辨识的难度。分析表明,当前最新版本的reCaptcha v2在问题图像的变化上会更加多样化, 加入了自动噪音的设计以及包括点击速度, 点击顺序, 以及一些虽然是目标但是通常人类可能不会去选取的一些图像识别以外的参数,使得先前基于分类器的攻击无效, 并且更难以突破。基于我们的测试, 我们设计了一套算法来解决这个问题, 实现我们的新版本reCaptcha验证码突破

分而治之, 首先通过分析我们知道验证码主要分为三种模式:
静态模式3X3, 这是一个简单的基于图像选择的验证码突破,需要用户选择包含目标对象的所在网格,然后单击验证按钮

在这里插入图片描述

静态模式4X4, 同样, 这也是基于图像选择的验证码突破,需要用户选择包含目标对象的所在网格,然后单击验证按钮, 由于图像的连续性, 一些不规则的目标(例如人行横道, 楼梯等)会极大地增加突破难度

在这里插入图片描述

动态模式3X3, 开始的时候,突破图像所呈现的方式与静态验证码是相同的。但是,一旦用户单击包含目标对象的所在网格后,新的图像就会加载到选定的网格上。它要求用户继续点击所有潜在的网格,直到突破窗口小部件中没有目标对象的图像。最后,用户单击验证按钮。该类型的验证突破由于图像是缓慢载入的, 会使得突破时长变得更长; 当然, 由于九张图像是各自独立的, 避免了不规则目标, 因此突破难度比静态会更低

在这里插入图片描述

在分析过程中我们还发现reCaptcha能够自适应应对我们机器人程序突破验证码的行为进行限制, 对于一定时间内累计识别错误的增加, 其提出的图像问题的难度也会随之增加, 会增加更难以辨认的图像, 会对于问题回答的答案要求更加苛刻。在我们的实验中,我们测试到突破图像的具有丰富的多样性。在下面的图中展示了一些背景失真的图像, 一些存在严重噪音的图像。同时我们看到有的目标物体有着不规则的形状, 以及不完整的形状。例如,验证码可能会提出自行车图像选择的问题, 但是实际给的问题图像可能只包括其中的一部分轮胎。其目的是使得问题变得模棱两可,故意混淆自动化程序。对此, 我们专门设计了克服这样问题的模块, 与图像识别模块并行工作, 协同解决这个问题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.2. 主要算法模块说明

  针对于reCaptcha提出图像问题, 速度和准确度都对于通过存在贡献, 为了提高速度, 我们直接采用截取屏幕图像的方式获得问题图像, 这样可以加快整个突破流程, 在我们测试中这样比采用图像下载的方式提升30%左右的处理速度, 在这里我们采用图像匹配算法以及变化图像稳定性判别算法模块来处理这个问题

4.3. 图像区域位置识别算法

  该算法模块主要是实现对于验证码区域的识别,采用经典图像匹配算法,通过模式将验证码区域图像准确获得并按模式进行4X4或3X3矩阵分割。这里主要是对于图像进行一个全局的特征图像搜索并结合一些位置区域特征, 例如特殊的图像, 特殊位置的图像元素等特征进行问题图像的定位, 并在图像显示完成后及时进行图像的截取

4.4. 物体检测算法

  该算法模块主要实现对于实体目标进行位置和大小的检测,采用512X512 Single Shot MultiBox Detector深度学习算法,为了确定目标的存在及其在图像中的位置,目标检测模型从一组带标签的训练图像中学习。检测对象的目标位置通常用边界框来描述。边界框是一个矩形框,通常由左上角的x轴和y轴坐标以及矩形右下角的x轴和y轴坐标定义。近年来,随着深度学习技术的发展和GPU等低成本计算设备的普及,一些强大的目标检测系统应运而生。我们尝试了几种先进的目标识别系统,如mask RCNN、Faster RCNN和SSD以及YOLO。我们发现,除了SSD和YOLO之外,大多数模型的计算成本都很高,而YOLO的精度特别是目标物体较小的时候, 精度是低于SSD的 ,即使我们利用了GPU。由于我们提出的系统是完全在线的,并且验证码挑战是时间敏感的,为了同时兼顾速度与精度, 所以我们决定使用SSD。在SSD目标检测网络中,我们虽然采用多尺度特征图的方式来保证能够检测到不同大小的物体,但是有些目标在图像中因为过大或者过小,会造成目标漏检,因此为进一步加强检测成功率,我们还对图像通过“金字塔模式”进行不同尺度的缩放后拼成一张512X512大图送入目标检测网络,如下图片的缩放和拼接方式示例。该策略主要用于动态验证码

在这里插入图片描述

在我们的实验中,我们发现SSD与其他检测系统相比,在保持几乎相似的检测性能的同时,速度较快。基于这些原因,我们在工作中使用了SSD作为基本的目标检测算法,网络结构如下图所示。从网络结构图可以看到,SSD提取了不同尺度的特征图来做检测,CNN网络一般前面的特征图比较大,后面逐渐采用stride=2的卷积或者pooling层来降低特征图大小。一个比较大的特征图和比较小的特征图都用来做检测,这样做的好处就是比较大的特征图用来检测相对比较小的的目标,而小的特征图负责用来检测大的物体

在这里插入图片描述

4.5. 特定目标分辨算法

  该算法有多个分类器,网络结构如下图所示,采用类ResNet网络结构的深度学习算法组成,分别针对不同的认知目标进行判别。我们通过实验统计发现,reCaptcha突破还有几个出现频率较高的对象,如:人行横道、楼梯和烟囱,它们不存在于MSCOCO数据集的80类。为弥补SSD目标检测算法在目标类别丰富度上的缺陷,并且针对小轿车和公交车等较小目标机器无法识别但肉眼可见的情况,我们再特别针对这7种目标进行优化。算法在几乎所有的模式中都有使用

在这里插入图片描述

4.6. 目标主区域分类算法

  该算法的提出主要为了解决选择框误报问题。该问题产生的原因主要有两个方面:
1、SSD检测算法的缺陷,即:对象的实际形状可能不像边界框那样是矩形。
2、一个对象可能并不总是占据整个边界框。这两个因素可能会导致边界框到网格的映射中出现一些误报。虽然很难完全消除误报,但我们采用目标主体区域分类算法,以尽可能减少影响。
该算法主要学习人类对于目标区域以及主体的关系。我们使用人工标注的5000+图片与机器选择的区域相比较,获得学习模型,让机器理解主体与选择框的关系,从而进一步加强对选框的精确性。算法在静态模式中使用

5. 训练数据说明

  我们使用公有ImageNet、MSCOCO和自定义数据集这3个数据集来分别训练检测模型和分类模型,我们首先简要描述数据集,然后简要描述训练过程。
针对SSD目标检测算法,我们首先使用ImageNet+私有数据共计140万张左右标注图片进行模型pre-trained。这样做的好处我们认为有3点:
1、ImageNet囊括了1000类别的数据,这些数据有各种各样浅层和深层的特征,在ImageNet上训练好的权值很好的提取到了这些特征。
2、 不同图片数据之间或多或少都存在共性,包括我们能看到和看不到的,因此在ImageNet上的权值能提取到我的图片数据集上的这些共性特征。
3、 ImageNet上特征在别的数据集上可能是不同的表现形式,用ImageNet上预训练的权值在我的图片数据集上提取到的这些特征刚好有一些特征可以很好地区分数据集中的图片。
为了提高预训练模型的精度,进而进一步提高后续模型的准确率,我们采用了warm-up优化技巧。意义在于,在模型训练的初始阶段,该模型对数据还很陌生,需要使用较小的学习率慢慢学习,不断的修正权重分布;中间阶段,当使用较小的学习率学习了一段时间后,模型已经把每批数据都看了几遍,形成了一些先验知识,这时候就可以使用较大的学习率加速学习,前面学习到的先验知识可以使模型的方向正确;decay阶段,模型训练到一定阶段后,该模型学习到的分布已经大体固定,需要学习的“新知识”较少,这时候如果继续沿用很大的学习率,可能会破坏模型权重分布的稳定性。
然后我们在预训练模型的基础上,在MSCOCO数据集约330000标注图片以一个较小的初始学习率开始进行fine-tuning。在由于MSCOCO包括80个常见对象且已经包含了reCaptcha突破中经常出现的对象,因此我们使用这个数据集来训练我们的对象识别和检测系统。我们考虑到google验证码图片的复杂性,为了增加训练数据的多样性使其能尽量涵盖真实的数据特征,我们在训练过程中对MSCOCO数据集进行了包括颜色变换、裁剪、镜像、缩放、背景失真等一些列数据增强操作。
自定义数据集。针对特定目标分类算法,我们特地建立了一个网络爬虫来抓取图像,还使用了一些来自原始的reCaptcha挑战的图像,下载并人工标注了10+万图片(如下图)进行多次训练、优化参数和网络结构。下图显示了我们通过实验统计发现的出现频率较高的5个挑战对象在训练数据中的占比情况

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网页JS代码,加密与不加密的区别

网页中用JS实现的功能,不加密时,是对所有访问者透明的,任何人都可以直接查看、分析其中的功能逻辑。而经混淆加密后的JS,以密文形式存在,可防止它人窥探。 例1,某网站JS代码: 使用JShaman对图中…

Airpods - 放到洗衣机里洗,最后成功救回 Airpods Pro,功能恢复如初!

前几天加班回来很晚了,倒头就睡,耳机放在裤兜子里,因为第二天是周末,睡到自然醒,没想到打开洗衣机洗衣服也没想起来耳机还在兜里。(此时想抽自己的大嘴巴子)洗完衣服去晒衣服,发现耳…

自动识别图片文字表格:高效神器,告别繁琐手动操作

现代科技的快速发展为我们的生活带来了许多便利和效率提升。在数据处理和文档管理方面,自动化技术也日益成熟和普及。一项非常有用的技术是自动识别文字生成表格,它可以将大量的图片识别成文本并转换为表格形式,使得数据的整理和分析更加简便…

【CIO人物展】国家能源集团信息技术主管王爱军:中国企业数智化转型升级的内在驱动力...

王爱军 本文由国家能源集团信息技术主管王爱军投递并参与《2023中国数智化转型升级优秀CIO》榜单/奖项评选。丨推荐企业—锐捷网络 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着全球信息化和网络化的进程日益加速,数字化转型已经成为当下各大企业追求的核心…

浅析应急疏散照明设计在高层建筑中的应用

【摘要】作为工程设计人员,对高层建筑的应急照明设计应有足够的认识和重视,以保证在出现失火事件时,可以有效地引导建筑内的人员安全逃离、正确疏散,这是建筑设计的*大价值所在。在设计应急照明时,应根据当地的情况选择…

香港金融科技周VERTU CSO Sophie谈Web3.0的下一个风口 手机虚拟货币移动支付

10月31日,香港金融科技周正式拉开帷幕。这项香港金融科技界地年度盛事今年已经踏入了第八届,本届活动吸引超过数百位金融科技专业人士、创业者和行业领袖现场参与,线上参与观众超过10万人次。 在金融科技周的圆桌会议上,VERTU首席…

使用群晖Docker搭建HomeAssistant并实现异地公网访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 使用群晖Docker搭建HomeAssistant并实现异地公网访问 文章目录 使用群晖Docker搭建HomeAssistant…

[云原生案例2.1 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】节点部分

文章目录 1. 常见的K8S安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署 2. Kubernetes单master集群架构 ---- (二进制安装部署)2.1 前置准备2.2 操作系统初始化2.3 部署 docker引擎 ---- (所有 node 节点)2.4 部署 etcd 集…

Kanna库

LuaHTTP是一个用于发送HTTP请求的Lua库,它提供了简单且易于使用的接口。您可以使用LuaHTTP库发送GET、POST、PUT、DELETE等类型的HTTP请求,并处理响应。 以下是LuaHTTP库的一个示例用法: local http require(“socket.http”) local respo…

wscat

wscat 是一个用于 WebSocket 通信测试的命令行工具 安装wscat flynnsinflynnsin:~$ sudo npm install -g wscat loadDep:ws → afterAdd ▄ ╢████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░…

挑战100天 AI In LeetCode Day02(1)

挑战100天 AI In LeetCode Day02(1) 一、LeetCode介绍二、LeetCode 热题 HOT 100-32.1 题目2.2 题解 三、面试经典 150 题-33.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目,面向程序…

【Java】封装、继承、多态

面向对象的重要特征:封装、继承、多态; 面向对象的语言的语言并不止Java,C也是面向对象的语言; 访问限定符 public:在哪里都可以使用(公开的);private:仅在当前类可以使用…

Turtle绘制五角星-第10届蓝桥杯省赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第4讲。 Turtle绘制五角星&…

【扩散模型】5、Diffusion models beat GAN | 使用类别引导图像生成

论文:Diffusion models beat GAN on image Synthesis 代码:https://github.com/openai/guided-diffusion 出处:OPENAI | NIPS2021 时间:2021 贡献: 在本文章之前,扩散模型生成的图片已经非常逼真了&am…

同样是巡检,巡检系统在不同行业运用大不同

随着智能巡检系统使用的扩大,巡检管理系统越来越被人们认可使用与喜爱,尚未使用的也都在准备的路上了,然而如何选择还是有些模糊的。今天我们就一起看下智能巡检系统在不同行业是如何运用的。 写在前面知识普及,为了长远发展的需…

07_es分布式搜索引擎3

一、数据聚合 1.聚合的分类 ①聚合可以对文档数据的统计,分析,运算 ②聚合的分类 桶Bucket聚合:对文档按照字段分组度量Metric聚合:计算最大值,最小值,平均值管道pipeline聚合:以聚合的结果为基础聚合 ③聚合的类…

Banana Pi BPI-W3 RK3588开发平台批量产测软件,全面批量测试

优秀的产品都要进行严苛的产品测试才能够经得起市场的检验由ArmSoM团队研发的产测软件用于在量产的过程中快速地甄别产品功能和器件的好坏,即重点 FCT(Functional Test)测试,进而提高生产效率和检测的准确性。ArmSoM团队的专业产测…

第二证券:需求回暖叠加价值提升 机构加码PCB板块

受华为手机、小米手机近期广受欢迎等利好消息提振,叠加AI板块的爆发,作为中心零部件的 PCB(印制电路板)板块后市可期,部分安排近期加码布局。 量价齐升 后市可期 安排布局PCB板块的理由主要有两个,一是需…

chrome driver下载、selenium安装及报错解决

目录 一、Chrome驱动下载 1.查看Chrome版本 2.下载驱动 3.驱动的路径 无法运行驱动 二、selenium的安装与使用 1.安装selenium 2.使用selenium 参考 一、Chrome驱动下载 1.查看Chrome版本 打开Chrome浏览器,点击右上角的三个点,再点击设置。 …

老胡的周刊(第114期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 pyvideotrans[2] 将视频从一种语言翻译为另一…