Python识别网站验证码

news/2024/5/20 21:07:13/文章来源:https://blog.csdn.net/weixin_34302561/article/details/93849485

http://drops.wooyun.org/tips/6313

 

Python识别网站验证码

 

0x00 识别涉及技术


验证码识别涉及很多方面的内容。入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足。

验证码图像处理

验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出验证码图像内的每个字符的文本矩阵。

  1. 读取图片
  2. 图片降噪
  3. 图片切割
  4. 图像文本输出

验证字符识别

验证码内的字符识别主要以机器学习的分类算法来完成,目前我所利用的字符识别的算法为KNN(K邻近算法)和SVM (支持向量机算法),后面我 会对这两个算法的适用场景进行详细描述。

  1. 获取字符矩阵
  2. 矩阵进入分类算法
  3. 输出结果

涉及的Python库

这次研究主要使用了以下这三个库

  1. numpy(数学处理库)
  2. Image(图像处理库)
  3. ImageEnhance(图像处理库)

验证码识别技术难点

验证码识别由两部分组成,分别是验证码图片处理和验证码字符学习。

  1. 在编码过程中,我认为难度最大的部分是识别算法的学习和使用。
  2. 在写文档的时候,我认为难度最大的部分是图像处理部分,图像处理部分需要对抗各种干扰因素,对抗不同类型的验证码需要不同的算法支持,因此图像处理程序需要对各种验证码具体问题具体分析,不能抱有大而全的思想,务必注重细节处理。

0x01 学习与识别


验证码识别的过程分为学习过程与识别过程

学习

enter image description here

识别

enter image description here

enter image description here

上图代码运用的是SVM的识别过程

0x02 图像处理


验证码图像处理脑图

enter image description here

如上图所示,验证码图像处理模块是一个结构规整、内部分支复杂的模块,整个验证码识别准确率全靠这个模块,可谓是整个验证码识别的根本。如 上文所说,图像处理模块玩的是图片内的每一个像素百度百科:像素,因此这个模块好上手。

enter image description here

上面这两句便可以打开一个图像对象,im对象内置许多方法有兴趣可以查看Image库源码或者参考Python Imaging Library Handbook 图片增加对比度、锐化、调整亮度、二值化,这四块是比较规整的模块,处理调用库函数即可。下面主要说说图片降噪和清楚单像素干扰线。

图片清除噪点

图片降噪的原理是利用9宫格内信息点(信息像素,一般经过预处理的信息像素为黑色)。

enter image description here

上图黑色部分为(x,y),单像素噪点处理时分别验证周围的八个点是否为白色,如果为白色即可判断(x,y)为噪点。同理双像素噪点需要考虑两个像 素的排列是横向还是纵向或者是斜向,之后判断其周围10个像素是否均为白色像素即可。同理三像素噪点也是这样,我尝试的情况三像素噪点不包括 横向排列和纵向排列。

图片清除干扰线

对于单像素的干扰线目前可以解决,但是大宽度干扰线则会产生判断上的误差,目前不好解决。

enter image description here

上图的干扰线为单像素,因此通过算法即可解决。

enter image description here

干扰线处理后的图片如上图所示。

图片切割

对于去噪后的图片,我们需要对图片进行切割,切割的目的是为了提取信息,方便把图片中的数字转化为01形式的文本。 我所采用的切割方式是投影法.

enter image description here

如上图所示,对于切割数字3,首先需要找到垂线A和B,判断步骤是:纵向从左向右扫描图片,找到第一条含有信息点的直线记为A,继续向右扫描, 当从A开始,找到第一条无信息点的直线记为B,从投影的角度来看,A与B之间X轴上的投影的信息值均大于0,切割A与B之间的图像后,以新图像为 基础,找出C与D,至此便可切割出数字3。

图片切割目前可以仅可对非粘连字符进行切割,对于粘连字符,我的程序并没能很好的处理。

信息输出

当获取了切割好的图片,由于图片只有黑色与白色,因此遍历每一个像素点,根据像素点的颜色来进行0,1输出,一般认为黑色像素输出1,白色像素 输出0。

enter image description here

0x03 识别算法概述


字符识别算法整体流程很好理解,举个例子,字符像素文本A进入识别算法,通过对算法的结果进行判断,便可以完成识别过程。我实践了两种识别算 法,第一种是KNN算法,第二种是SVM算法,下面我将以个人的角度来阐述下这两种算法的原理以及适用场景,个人水平有限,算法细节可以参考我 之后给出的链接。

KNN(K邻近算法)

KNN算法是一种简单的算法,KNN算法基本思想是把数据转化为点,通过计算两点之间的距离来进行判断。 在n维度下,两点间距离可以表示为 S = math.sqrt((x1-y1)^2+(x2-y2)^2+.+(xn-yn)^2)。

SVM(支持向量机)

SVM算法相比较KNN算法来说,原理上要复杂复杂的多,SVM算法基本思想是把数据转化为点,通过把点映射到n维空间上,通过n-1维的超平面 切割,找到最佳切割超平面,通过判断点在超平面的哪一边,来判断点属于哪一类字符。

enter image description here

但是SVM算法的特点只能在两类中间比较,因此把字符识别运用到该算法上,还需要在比较过程中加以一个遍历算法,遍历算法可以减少大量无效计 算,遍历的场景是一个有向无环图。

算法细节文档链接

  1. jerrylead 的blog : Machine Learning
  2. 支持向量机通俗导论(理解SVM的三层境界)

0x04 识别算法适用场景


KNN与SVM的适用场景存在一定区别。

KNN算法在运行过程上来说,并不存在学习过程,只是遍历已知分类进行距离上的判断,根据待测数据与已知分类进行比较,找出与待测距离最近的n个数据来进行匹配,因此当已分类的样本越来越多,KNN算法的运算时间会越来越长。

SVM算法在运行过程中,是存在学习的过程的,通过对已知分类标签进行两两组合,找出每个组合的切割方程。待测数据只需要一个一个计算切割方程,根据切割方程的返回值来判断下一个执行的是哪个方程即可。0-9数字的判断,只需要执行9次方程计算即可。SVM多类分类方法

因此如果大规模识别验证码,我建议适用SVM作为识别算法。

0x05 实践细节注意事项


这部分内容是我所遇到的问题。

规则化图像

当切割的验证码以数字呈现在文本里,他们的像素是各不相同的,需要把这些标准化,我选择标准化在27*30像素是一个经验值。此外,还需要把新图 像放置在标准化像素的正中央。

enter image description here

使用SVM构建超平面方程

SVM算法的重点是寻找切割方程,首先需要把待判断的两种元素存入到dataArr和labelArr中,通smoP方程寻找b和alphas。

enter image description here

利用方程组预测——遍历dag图

由于svm是二分类器,只能判断是或者不是,只需要使用k一1个决策函数即可得出结果,不存在误分、拒分区域;另外,由于其特殊的结构,故有一定的容错性,分类精度较一般的二叉树方法高。

对于0123456789 共10个字符 共有45种非重复组合。利用dag只需判断9次即可找出目标。

enter image description here

0x06 实践总结


  1. 运用机器学习算法时,如果不理解实现原理,先直接套接口,总之先实现功能,不必强求对算法的彻底理解。 2. 识别算法是通用的。

  2. 处理不同验证码,应该有不同的处理策略。

  3. 测试发现,主要耗时发生在构建方程过程中,构建方程耗时105s,识别1s。

  4. 图像去噪时对于大宽度的干扰线没有好的解决办法(干扰线宽度大于3像素)。 6. 图像切割在面临图像粘连时,目前无很好的处理方法。

  5.  

 

转载于:https://www.cnblogs.com/donaldlee2008/p/5236876.html

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页…

高并发量网站解决方案

2019独角兽企业重金招聘Python工程师标准>>> 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业…

Docker -- 2 -- 利用docker部署网站和数据库

在Docker – 系统整洁之道 – 1中已经对Docker的一些命令和Docker镜像的使用及操作做了记录。 这次就利用docker进行一次真正的实例使用,使用docker搭建一个简单的答题系统,这个系统是当时做来给网络安全周做手机答题的系统,很简单&#xff…

《淘宝店铺 大数据营销+SEO+爆款打造 一册通》一一2.1 生意参谋平台概述

本节书摘来自异步社区出版社《淘宝店铺 大数据营销SEO爆款打造 一册通》一书中的第2章,第2.1节,作者:葛存山 , 耿寿礼,更多章节内容可以访问云栖社区“异步社区”公众号查看。 第2章 生意参谋——大数据分析利器 淘宝店铺 大数据…

[资源推荐] 必须收藏的两个查找论文和代码实现的网站!

参考自:https://juejin.im/post/5c57f86c51882562002aec03 无论是研究方向是 AI 方面的学生,或者是做机器学习方面的算法工程师,在掌握基础的机器学习相关知识后,都必须掌握搜索论文的技能,特别是研究或者工作领域方向…

再陷风波 Equifax又一门户网站被曝安全漏洞

近日,美信用机构Equifax被证实公司在今年5月到7月期间,遭到黑客攻击,导致约有1.43亿用户数据遭到泄露。现在,又一个Equifax门户网站被指出存在安全协议问题。 据最先发现问题的Hold Security LLC指出,一个来自阿根廷名…

ASP.NET Core 一步步搭建个人网站(4)_主页和登录验证

上章节我们已经定制好动态配置的菜单,用户登录网站的第一步就是进入首页内容,那我们先搭建一下我们的首页内容。想着自己的网站内容主要是个人博客类型,所以,首页就展示博主本人的一些基本信息吧,哈哈。当然&#xff0…

Java裸写爬虫技术,运用多线程技术,高效爬取某个医疗机构网站数据

最近喜欢上了数据的庞大的感觉,就爬取了一下某个医疗机构网站医疗数据,由于数据量庞大,只爬取了江西省的各个市的各个医院的各个科室的各个科室。中各种信息。其中用的持久层技术是hibernate框架,和用到一些ioc技术。话不多说&…

解决登录同一个网站,连接失败

2019独角兽企业重金招聘Python工程师标准>>> 程序报错 MaxRetryError: HTTPConnectionPool(host127.0.0.1, port53742): Max retries exceeded with url: /session/7e0b607f-022e-4464-9eb3-461844f59b84/window/maximize (Caused by NewConnectionError(<urllib…

Awesome 书籍源码论文软件下载网站整理

software.informerAAAI会议论文下载Packt出版商的书籍开源代码&#xff0c;目前已经超过6600个仓库

在IIS管理器添加网站

1.添加物理路径 2.跨域问题解决方案 A.点击所创网站出现如图所示&#xff0c;双击HTTP响应标头 B.右键–“添加”&#xff0c;添加以下2条&#xff1a; Access-Control-Allow-Headers&#xff1a;Content-Type, api_key, Authorization Access-Control-Allow-Origin&#xf…

超全Inventor 3d模型素材网站整理

家人们&#xff0c;最近我找到了一个很好用的Inventor 3d模型免费素材网站 本人曾经也是废大把时间寻找资源&#xff0c;质量还不咋地&#xff0c;但是通过朋友安利&#xff0c;知道了一个很好的网站&#xff1a;爱给网&#xff0c;里面资源内容丰富&#xff0c;并且可以一键下…

良心安利电梯过道su模型素材网站

电梯过道su模型类资源应该算是素材类网站中必不可少的资源类型了吧~今天给大家推荐超好用&#xff0c;免费质量高的素材噢&#xff0c;让你坐拥海量资源同时又不撞款&#xff01; 免费资源最多&#xff0c;又全面的&#xff0c;那就是 爱给网啦&#xff01; 它有很多素材&…

宝藏又小众的灯饰装修设计素材网站分享

今天小编针对灯饰装修设计素材为大家整理了很多内容哦&#xff0c;肯定有需要的小伙伴吧&#xff0c;实用、免费、优质的素材谁又不心动呢&#xff01;赶紧码住&#xff01; 免费资源最多&#xff0c;又全面的&#xff0c;那就是 爱给网啦&#xff01; 它有很多素材&#xff0…

超全教育cc0高清摄影图片素材网站整理

天天各大网站找教育cc0高清摄影图片素材&#xff1f;最后空手而归&#xff1f;今天为大家推荐教育cc0高清摄影图片素材网站&#xff0c;质量上乘适合资源慌缺的你&#xff0c;话不多说准备开始收藏吧&#xff01; 接下来就给大家介绍一下我珍藏已久的网站&#xff0c;我的工作…

超全园林 景观cc0高清摄影图片素材网站整理

看到大家都在问园林 景观cc0高清摄影图片素材&#xff0c;既要免费又要质量好&#xff0c;数量还要多&#xff0c;小编好不容易挖到了宝藏素材网站哦&#xff0c;资源优质数量庞大&#xff0c;使用体验也很好&#xff0c;要是需要的话&#xff0c;赶紧看一看&#xff0c;小编会…

良心安利食物 美食免抠元素素材网站

天天各大网站找食物 美食免抠元素素材&#xff1f;最后空手而归&#xff1f;今天为大家推荐食物 美食免抠元素素材网站&#xff0c;质量上乘适合资源慌缺的你&#xff0c;话不多说准备开始收藏吧&#xff01; 本人曾经也是废大把时间寻找资源&#xff0c;质量还不咋地&#xf…

宝藏又小众的线条免抠元素素材网站分享

最近看到很多朋友吐槽线条免抠元素素材不好找&#xff0c;有时花了大把时间却没找到合适的&#xff0c;而且有的时候会涉及到各种问题等&#xff0c;不仅工作效率降低&#xff0c;还闹心郁闷&#xff0c;所以今天就给大家分享一下小编自己在亲身体验和搜寻网站中&#xff0c;收…

最良心的网站可以良心到什么程度?

之前就在爱给网下载过音频&#xff0c;最近点进爱给网首页&#xff0c;发现爱给网上新了一系列在线小工具。不收费&#xff0c;完全免费&#xff0c;没有广告&#xff0c;页面简约&#xff0c;真的是很惊喜&#xff0c;迫不及待分享给大家&#xff0c;今天先跟大家分享一下我使…

良心安利企业内部管理设计模板素材网站

今天小编针对企业内部管理设计模板素材为大家整理了很多内容哦&#xff0c;肯定有需要的小伙伴吧&#xff0c;实用、免费、优质的素材谁又不心动呢&#xff01;赶紧码住&#xff01; 免费资源最多&#xff0c;又全面的网站&#xff0c;我找到啦&#xff01;&#xff01;它有很…