验证码 html 自动验证码,15分钟搞定自动识别网站验证码

news/2024/5/14 3:00:57/文章来源:https://blog.csdn.net/weixin_33609486/article/details/117773025

概述

很多开发者都讨厌网站的验证码,特别是写网络爬虫的程序员,而网站之所以设置验证码,是为了防止机器人访问网站,造成不必要的损失。现在好了,随着机器学习技术的发展,机器识别验证码的问题比较好解决了。

样本采集工具

这里我们采用wordpress的Really Simple CAPTCHA生成验证码的插件,之所以选择这个插件,一个是它的安装量很大,二个是因为它是开源的,我们可以利用它批量的生成验证码图片。

目标估计

我们通过demo网站得知,Really Simple CAPTCHA生成的是包含4个数字或者字母的图片,通过阅读源码得知,这个插件还屏蔽了O和I这两个比较容易混淆的字母,也就是说,还剩下32个字符,看来可以完成。   目前花费了两分钟。

依赖

我们要用到以下的工具和库。

python3

opencv

keras

tensorflow

创建样本集

为了达到目的,我们首先要准备样本集,样本如下:

WNglalqZD8cpcRdD.png

使用Really Simple CAPTCHA插件的源码,我们很方便的批量生成10000个验证码图片和对应的结果,待我们生成完成后,大概如下:

Ya2F6ZlTcy8Sa8rC.png

这地方大家可以根据自己的实际情况修改Really Simple CAPTCHA插件的源码,来生成自己想要的样本集。如果你觉着麻烦,也可以下载我生成好的。

目前为止,我们花了五分钟。

如何训练

我们现在有了样本集了,我们可以直接那图片和对应的结果直接进行神经网络的训练。

iaLwNyqSkVWEaKVB.png 只要我们的样本够多,最终也能达到我们想要的效果。

但我们也可以采用更好的训练方法,这个训练方法使用更少的样本数据,但是结果要比直接训练的方法好很多,我想你已经猜到了,这个方法就是把图片中的四个字符切割开,形成四个样本。这方法之所以可行,是因为所有的验证码图片都是4个字符的。

INPDLChbR5Vy6xgO.png

10000张图片,一张一张手动用PS去切割,肯定不现实,而且由于图片的横向排列并不是等间距的,字符间的距离大小不一致,手动切割肯定不可能了。

QVazHvcRfj6o5eQt.gif

其实我们只要画出一个矩形,保证矩形框里只有字符就可以,然后从图片中切出这样的一个矩形,就形成了一个单个字符的图片样本。幸运的是,这个操作opencv已经帮我们实现了,opencv有个函数叫做findContours(),可以按照同样色值的区域裁剪我们想要的矩形。 - 首先准备一个图片:

MwPTWfdtZIbV1upA.png - 转换图片为黑白色。这样有字符的地方为黑色,空白为白色,便于opencv裁剪。

yodEBMnbAOjVodyZ.png -接下来我们用opencv的findContours函数切割图片。

qBqCmCdQ64WZ6Kjo.png

接下来,我们就把图片从左到右进行切割,并存储切割后的图片,以及图片对应的字符。但是实际操作的过程中,我发现一个问题,就是有时候两个字符靠的太近,导致opencv在切割的时候,把两个字符切割刀一个图片里了,比如:

zM5CtRrJRaICHVIA.png 切割完的效果是:

bB27Qdpl5Qds3oUc.png 如果不解决这个问题,我们的样本集就不准了,那训练出来的模型也就不可能正确了。我的解决方法是,首先设置一个字符宽最大的像素,如果超过这个像素,则认为一个图片中包含了两个字符,然后我们选择把这个图片对半切割,分成两个字符。例如:

yWC5gVo4jDx35C9e.png 好,我们现在得到了一个验证码图片对应的4个字符的图片,现在我们把所有的样本图片都切割好,然后,把相同的字符对应的图片放到一个文件夹,这么做的目的是尽量多的找出同一个字符的多种样式。结果如下:

ffX9lVkTGuAwwCdG.png   到目前为止,我花了10分钟。

训练模型

因为我们只是识别图片对应的数字或者字母,所以我们不需要特别复杂的神经网络算法。识别字符比识别小猫小狗的简单多了。   我这地方使用卷积神经网络,two convolutional layers and two fully-connected layers。

MPcjdFdtUypAvcxJ.png 这地方对卷积神经网络算法就不做详细介绍,感兴趣的同学,可以google学习一下。   训练完成后,我们需要测试一下。15分钟花完。

总结

整个过程看起来很简单: - 从使用我们上述提到的插件的wordpress网站上下载验证码图片 - 把图片切割成包含单个字符的小图片 - 使用神经网络算法训练模型 - 预测新的验证码图片对应的字符

下面是我的测试:

zqlYQydyOeThZk1h.gif

代码

你可以从这得到完整的代码和示例图片,你可以参照README来运行相关的程序。

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

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

相关文章

使用upupw kangle软件本地批量建站(站群)

1.一开始如下图: 2.我这里准备了50个网站,需要一次性加上去(批量增加): 3.将生成好的代码复制到config.cml里面 4.重启服务器 5.如下图:

css background-image 高度自适应_打造自适应网站只用一个CSS属性就够了

用一个CSS属性创建一个响应式网站,让我们来看看它是如何做到的。 以这个模板为例,没有应用css属性。 使用 clamp() CSS函数,我们可以创建仅具有一个属性的响应式网站。现在添加魔术CSSclamp(minimum, preferred, maximum);在这里!…

ppt正在与服务器连接确定信息,dreamwaver 做网站解析9.ppt

dreamwaver 做网站解析9.ppt 1 项目九网站管理与发布 教学任务要点 学习网站管理 掌握网站管理窗口的使用 查看与更正链接 能够发布网站文件 连接服务器 网站文件的上传与下载 本章重点 网站管理窗口的使用 查看与更正链接 远程信息和服务器模型的设置 连接服务器 发布网站文件…

tp生成网站地图sitemap.html

实现的效果如下: 实现的方法: protected function articlehtml(){$list = db(article)->alias(a)->join(column b,b.c_id=a.a_columnid)->order(a_id asc)->select();$sitemap=<!doctype html><head><meta charset="utf-8"><titl…

pythonweb网站开发基础django安装

1.第一步安装python&#xff08;这里不讲安装&#xff09; 2.安装django命令&#xff08;打开cmd输入&#xff09;&#xff1a; pip install django 3.出现以下页面说明安装成功&#xff1a;

pythonweb网站开发基础创建django项目

1.django-admin startproject mydeo&#xff08;项目名mydemo&#xff09; 出现以下页面说明安装成功&#xff1a;

pythonweb网站开发基础添加应用

1.添加first应用 python manage.py startapp first

百度网站html验证码,玩转百度云加速:解决网站访问需要输入验证码与5秒浏览器检查问题...

问&#xff1a;如何关闭CC的浏览器验证/验证码窗口&#xff1f;答&#xff1a;关于验证码防护&#xff1a;验证码防护是云加速的基础防御规则&#xff0c;当您的网站收到来源于异常IP的异常请求时&#xff0c;系统会自动判定需手动输入验证码&#xff0c;如果您需要解决该问题&…

获取网站地址栏URL中的参数值并转换成json对象

常见获取地址栏信息几个方法&#xff1a; //设置或获取整个 URL 为字符串。 alert(window.location.href);//设置或获取 href 属性中在井号“#”后面的分段。 alert(window.location.hash);//设置或获取 href 属性中跟在问号后面的部分。 alert(window.location.search); fun…

paypay+thinkphp开发接入网站

国内对他的教程基本上没有,这里才写这篇文章 1.这里是paypay不是paypal不要混了,下载建议使用vpn访问,这里只说整个流程,具体让官方提供详细实例调用(文档说的并不清楚)SDK文件下载:2.https://download.csdn.net/download/mo3408/85551658 2.整个流程: 3.建立客户:…

Service Workers让网站动态加载Webp图片

Service Workers加载webp图片 每个图片加载请求可以通过accept获取是否支持webp格式,例如如下图 利用这一点,我们可以判断支持webp图片,就使用webp图片。我们需要注册一个Service Worker。Service Worker的一大特性就是,它们能够拦截网络请求,这样子,我们就能够完全控制…

IIS网站出现401未授权访问

1.登录网站服务器——>找到对应的网页目录——>在该目录上点击鼠标右键——>选择“属性”——>在弹出的“属性”对话框中&#xff0c;切换到“安全”选项卡中——>点击网页浏览使用的“User”用户组——>在“读取和运行”、“读取”、“列出文件夹和目录”前…

零基础零成本制作一个好看的导航网站

零基础零成本制作一个好看的导航网站 参考于&#xff1a;B站 1.环境准备 下载服务器环境工具。 地址&#xff1a;https://www.xp.cn/download.html 安装后打开&#xff0c;安装数据库、php FTP等。 回到首页&#xff0c;启动后三项。 创建网站 安装WordPress工具 网站链接&am…

绕过CloudFlare缓存来达到网站加速目的

1、登录CloudFlare后台&#xff0c; 2、找到规则-页面规则 3、新建一个规则&#xff0c;域名写你的域名&#xff0c;如&#xff1a; 1 *www.gehweb.top/* 规则设置选&#xff1a;“缓存级别” 缓存级别选&#xff1a;绕过

网站被黑 搜索快照被劫持跳转到另一网站

2018年圣诞节来临之际随着互联网的网站数量不断的庞大增加,随之而来的网站安全问题凸显上升,很多企业网站的百度快照出现被劫持跳转,以及网站快照被劫持在百度中的搜索关键词出现标题描述与网站不相符的问题,导致网站在搜索引擎中的排名大大下降,那么具体是什么原因导致的&…

iptables防火墙只允许指定ip连接指定端口、访问指定网站

2019独角兽企业重金招聘Python工程师标准>>> iptables防火墙只允许指定ip连接指定端口、访问指定网站 发布时间&#xff1a;2015-05-08 13:04:04 作者&#xff1a;佚名 我要评论 这篇文章主要介绍了iptables防火墙只允许指定ip连接指定端口、访问指定网站,需要…

瞬时响应:网站的高性能架构

原文地址&#xff1a;http://www.admin10000.com/document/3047.html 什么叫高性能的网站&#xff1f; 两个网站性能架构设计方案&#xff1a;A方案和B方案&#xff0c;A方案在小于100个并发用户访问时&#xff0c;每个请求的响应时间是1秒&#xff0c;当并发请求达到200的时…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

ReactPHP 爬虫实战:下载整个网站的图片

什么是网页抓取? 你是否曾经需要从一个没有提供 API 的站点获取信息? 我们可以通过网页抓取&#xff0c;然后从目标网站的 HTML 中获得我们想要的信息&#xff0c;进而解决这个问题。 当然&#xff0c;我们也可以手动提取这些信息, 但手动操作很乏味。 所以, 通过爬虫来自动化…

基于jsp的团购网站代码_手把手教你做毕设计:基于JSP+MySQL的简单校园新闻网站(2)...

本篇教程是第二篇哈&#xff0c;现在给大家更新&#xff0c;大家跟上一期的第三篇调着看哈。不清楚的地方&#xff0c;可以留言。另外整理了一些视频学习教程&#xff0c;需要学习系统视频教程的伙伴&#xff0c;可以留言回复。我根据大家需求给大家发&#xff01;背景上一篇讲…