许多网站在进行某些操作前会要求输入验证码以此来抵御爬虫和攻击。此篇主要讲述如何通过代码来识别一些常见的验证码。以此探究图片识别的过程以及如何避免生成容易被识别的验证码。
图片识别的过程
1. 取样本
2. 清洗区分样本
3. 提取样本特征
4. 提取目标的特征与样本进行对比
Java有丰富的图片处理类,本次操作使用java语言。
1
取目标网站的验证码样本。在web页面中查看验证码请求的地址。通过http请求批量获取验证码并保存在本地。
2
区分样本。对每张验证码图片进行人工识别区分,重命名为该图片的验证码。
3
清洗切割样本,提取样本特征。图片识别需要尽可能细地区分出特征点。我们观察上图的验证码图片可以发现多个信息:
● 验证码的背景存在着许多干扰线。
● 每个数字分明,所占的位置几乎是均等的。
● 验证码的数字颜色比较深,干扰因素颜色较浅。
我们可以尝试通过颜色的深浅去除干扰因素。先通过灰度处理,将验证码中颜色较浅的点置换成白色,颜色较深的点置换成黑色。
通过改变灰度阈值grayValue不断尝试去除干扰点。最后得到干净的验证码。
接下来通过识别图片中的黑色点,使用下面的trainData()方法。
沿着黑色点进行矩形切割,得到单个数字的特征样本。
得到的验证码特征样本训练集合如下:
4
提取目标验证码的特征,与训练集合做对比,识别目标验证码图片
通过上面的三步,我们已经得到了一组样本特征,接下来只需要把将目标验证码同样执行上面的3步。把提取出来的目标验证码特征与样本特征作对比。如果双方绝大部分像素点的颜色相同,则可认为目标验证码与样本内容一致。取样本的文件名,即可等到目标验证的内容了。以下为对比识别的代码。
通过上面的四部操作,我们已经能够识别出一些网站的验证码了。上面使用的方法是通过颜色的深浅,去除干扰素,再提取样本特征进行对比。面对其他的一些验证码需要我们通过观察掌握图片的规律,灵活地使用其他的算法来识别去除干扰素,提取出样本特征。
同样地,在生成验证码的过程中,我们需要避免生成易于去除的干扰素。各个验证码之间在不影响人工识别的情况下尽可能粘连起来,避免被切割分类。
睿江云官网链接:https://www.eflycloud.com/home?from=RJ0032
云服务器是一种简单高效、可弹性伸缩的计算服务,能提升运维效率,降低IT成本。
云磁盘存储
睿江云磁盘存储让客户按需求增加、删除硬盘数量。灵活控制成本。硬盘有中心存储SSD...
云快照备份
睿江云快照备份针对磁盘提供快捷恢复和备份的功能。我们提供“一次快照,无限还...
镜像服务
睿江云镜像服务是通过云主机下的磁盘创建的副本文件,该副本文件包含了一块或多块...
两个鬼故事为公司起名国贸公司起名大全微软回应断供中国起个励志名字易经起名方起名字大全男孩名字谍影重重6春节烟花白事用品店起个啥名字呢林徽因简介pp卡丁车宁波小孩起名用带木字的字起名男装店起什么名字好呢雉妾莛字起名的寓意海军工程大学贴吧俊字起名女孩一个王男孩起名大全8月8日生人起名2019女孩子起名万物理论宋 起名字电脑音响没声音起名字少什么建材公司怎么起名大全北京家装设计女生论语起名newto认知心理学少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了