【牛腩】网页验证码

2024-08-26 19:18
文章标签 网页 验证码 牛腩

本文主要是介绍【牛腩】网页验证码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        验证码各种注册或网页登录的时候都会用的,以前不知道它是怎么来的?说实话也不太明白为什么每次都要填写验证码?看不清楚感觉很耽误事,这些感觉是从一名普通使用者的角度想的,看了牛腩视频深入了解了一下验证码。

        【知识点】

        1、是什么?

              验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。

        2、为什么用?

             防止有人搞破坏,或者自己用软件大量重复注册,造成服务器做大量无用功耽误其他用户正常访问,验证码都是图片,只能人用眼睛识别,编写的程序识别不了,就极大的避免了自动注册。不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。而且有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,提高用户账户的安全性。

         3、怎么做?

             新建一个 一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名。编写如下代码:

<span style="font-size:18px;">using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Web.SessionState;public class WaterMark : IHttpHandler, IRequiresSessionState  // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间
{public void ProcessRequest(HttpContext context){string checkCode = GenCode(5);  // 产生5位随机字符context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22);Graphics g = Graphics.FromImage(image);try{//生成随机生成器Random random = new Random();//清空图片背景色g.Clear(Color.White);// 画图片的背景噪音线int i;for (i = 0; i < 25; i++){int x1 = random.Next(image.Width);int x2 = random.Next(image.Width);int y1 = random.Next(image.Height);int y2 = random.Next(image.Height);g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);}Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true);g.DrawString(checkCode, font, brush, 2, 2);//画图片的前景噪音点g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);System.IO.MemoryStream ms = new System.IO.MemoryStream();image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);context.Response.ClearContent();context.Response.ContentType = "image/Gif";context.Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}/// <summary>/// 产生随机字符串/// </summary>/// <param name="num">随机出几个字符</param>/// <returns>随机出的字符串</returns>private string GenCode(int num){string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//"的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严";char[] chastr = str.ToCharArray();// string[] source ={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#", "$", "%", "&", "@" };string code = "";Random rd = new Random();int i;for (i = 0; i < num; i++){//code += source[rd.Next(0, source.Length)];code += str.Substring(rd.Next(0, str.Length), 1);}return code;}public bool IsReusable{get{return false;}}}</span>
        比如登录页需要验证码,需要在其前台login.aspx中编写如下代码:

<span style="font-size:18px;"><p>验证码:<asp:TextBox ID="txtCode" runat="server" CssClass="textcode"></asp:TextBox><img src="../handler/WaterMark.ashx" id="vimg" alt="" οnclick="changeCode()" /><asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="请输入验证码!" Text="*" ControlToValidate="txtCode" ForeColor="Red"></asp:RequiredFieldValidator>
</p></span>
        后台则需要对判断验证码的正确性:

<span style="font-size:18px;"> //  判断验证码是否正确string code = txtCode.Text.Trim().ToUpper();string rightCode = Session["Code"].ToString();if (code != rightCode){Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('验证码输入错误!');</script>");return;}</span>
        最后显示结果如下:点击验证码可以自动刷新

        

        【小结】

        验证码很熟悉的东西,之前想过它到底有什么作用,但只是想过而已,通过这次学习,自己实现一下,再深入的查一下验证码的作用,又学到一些东西。
  

这篇关于【牛腩】网页验证码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109441

相关文章

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.