LazyCaptcha v2(基于SkiaSharp)图片验证码的具体使用(.Net Core5来做示例)

这篇具有很好参考价值的文章主要介绍了LazyCaptcha v2(基于SkiaSharp)图片验证码的具体使用(.Net Core5来做示例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下内容均来自Gitee的开源仓库,具体的使用请移步Gitee:https://gitee.com/pojianbing/lazy-captcha

以下是我自己使用的具体方式

首先安装NuGet包:

Microsoft.Extensions.Caching.StackExchangeRedis

Lazy.Captcha.Core

 

Lazy.Captcha.Core可以选择以下方式进行安装

Package Manager

Install-Package Lazy.Captcha.Core

.NET CLI

dotnet add package Lazy.Captcha.Core

在Startup.cs文件的ConfigureServices方法中配置什么什么方式存储,我这里使用使用redis分布式缓存,默认使用的是 内存存储(AddDistributedMemoryCache)
            

//默认使用内存存储(AddDistributedMemoryCache)
//services.AddCaptcha(Configuration);

//如果使用redis分布式缓存
builder.Services.AddStackExchangeRedisCache(options =>
{
    options.Configuration = builder.Configuration.GetConnectionString("RedisCache");
    options.InstanceName = "captcha:";
});

然后继续在上面所提到的方法中加入以下代码:

// 全部配置
            services.AddCaptcha(Configuration, option =>
            {
                option.CaptchaType = CaptchaType.WORD; // 验证码类型
                option.CodeLength = 4; // 验证码长度, 要放在CaptchaType设置后.  当类型为算术表达式时,长度代表操作的个数
                option.ExpirySeconds = 120; // 验证码过期时间
                option.IgnoreCase = true; // 比较时是否忽略大小写
                option.StoreageKeyPrefix = ""; // 存储键前缀

                option.ImageOption.Animation = true; // 是否启用动画
                option.ImageOption.FrameDelay = 60; // 每帧延迟,Animation=true时有效, 默认30

                option.ImageOption.Width = 150; // 验证码宽度
                option.ImageOption.Height = 50; // 验证码高度
                option.ImageOption.BackgroundColor = SKColors.White; // 验证码背景色

                option.ImageOption.BubbleCount = 2; // 气泡数量
                option.ImageOption.BubbleMinRadius = 5; // 气泡最小半径
                option.ImageOption.BubbleMaxRadius = 15; // 气泡最大半径
                option.ImageOption.BubbleThickness = 1; // 气泡边沿厚度

                option.ImageOption.InterferenceLineCount = 2; // 干扰线数量

                option.ImageOption.FontSize = 36; // 字体大小
                option.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj; // 字体

                /* 
                 * 中文使用kaiti,其他字符可根据喜好设置(可能部分转字符会出现绘制不出的情况)。
                 * 当验证码类型为“ARITHMETIC”时,不要使用“Ransom”字体。(运算符和等号绘制不出来)
                 */

                option.ImageOption.TextBold = true;// 粗体,该配置2.0.3新增
            });

如果要修改配置参数去参考上面提到的原文链接。

接下来在appsettings.json文件中配置Redis的配置如果没修改过Redis的默认配置直接复制粘贴上去即可,如果自己修改过就按照自己修改的配置。

"ConnectionStrings": {
    "G6StringDB": "server=.;uid=sa;pwd=123456;database=2010ARbacDB;",
    "RedisCache": "localhost,password=123456"
  },

再加入以下这段代码,这段代码也还是图片验证码的参数配置,如果要修改配置参数去参考上面提到的原文链接。

"CaptchaOptions": {
    "CaptchaType": 5, // 验证码类型
    "CodeLength": 4, // 验证码长度, 要放在CaptchaType设置后  当类型为算术表达式时,长度代表操作的个数
    "ExpirySeconds": 60, // 验证码过期秒数
    "IgnoreCase": true, // 比较时是否忽略大小写
    "StoreageKeyPrefix": "", // 存储键前缀
    "ImageOption": {
      "Animation": false, // 是否启用动画
      "FontSize": 32, // 字体大小
      "Width": 100, // 验证码宽度
      "Height": 40, // 验证码高度
      "BubbleMinRadius": 5, // 气泡最小半径
      "BubbleMaxRadius": 10, // 气泡最大半径
      "BubbleCount": 3, // 气泡数量
      "BubbleThickness": 1.0, // 气泡边沿厚度
      "InterferenceLineCount": 4, // 干扰线数量
      "FontFamily": "kaiti", // 包含actionj,epilog,fresnel,headache,lexo,prefix,progbot,ransom,robot,scandal,kaiti
      "FrameDelay": 15, // 每帧延迟,Animation=true时有效, 默认30
      "BackgroundColor": "#ffff00", //  格式: rgb, rgba, rrggbb, or rrggbbaa format to match web syntax, 默认#fff
      "ForegroundColors": "", //  颜色格式同BackgroundColor,多个颜色逗号分割,随机选取。不填,空值,则使用默认颜色集
      "Quality": 100, // 图片质量(质量越高图片越大,gif调整无效可能会更大)
      "TextBold": false // 粗体,该配置2.0.3新增
    }
  }

接下来就是在你登录的逻辑中加入验证码对比功能

首先使用构造函数的注入方式将ICaptcha分布式缓存进行依赖注入

private readonly ICaptcha _captcha;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="captcha"></param>
        public CaptchaController(ICaptcha captcha)
        {
            _captcha = captcha;
        }

然后通过

/// <summary>
        /// 获取验证码
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet("ICaptcha")]
        public IActionResult Captcha(string id)
        {
            var info = _captcha.Generate(id);
            // 有多处验证码且过期时间不一样,可传第二个参数覆盖默认配置。
            //var info = _captcha.Generate(id,120);
            var stream = new MemoryStream(info.Bytes);
            return File(stream, "image/gif");
        }

获取到图片验证码文件流返回给前端进行显示。

最后用下面的代码将验证后的结果返回判断验证码是否对比成功。

/// <summary>
        /// 多次校验(https://gitee.com/pojianbing/lazy-captcha/issues/I4XHGM)
        /// 演示时使用HttpGet传参方便,这里仅做返回处理
        /// </summary>
        [HttpGet("IValidate2")]
        public IActionResult Validate2(string id, string code)
        {
            var rul= _captcha.Validate(id, code, false);
            return Ok(new
            {
                rul
            });
        }

 图片验证码中的验证内容是存储在Redis中的。

这样就可以去使用了,仅供参考,如遇到问题去看原文链接。文章来源地址https://www.toymoban.com/news/detail-708552.html

到了这里,关于LazyCaptcha v2(基于SkiaSharp)图片验证码的具体使用(.Net Core5来做示例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium破解滑动验证码的原理及解决思路

    🍅 视频学习: 文末有免费的配套视频可观看 🍅  点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快  1、获取页面元素信息: 使用Selenium打开目标网页,并通过相关方法获取滑块、背景图等元素的位置和属性信息。可以使用Selenium提供的定位方法(如xpa

    2024年02月20日
    浏览(57)
  • 织梦DedeCms取消后台登陆验证码的方法示例

    首先模拟会员登录和退出,有两个重要文件,一个是include下的memberlogin.class.php和include/helpers下的cache.helper.php文件。 原理为:memberlogin.class.php通过使用缓存助手 helper(\\\'cache\\\'),然后/member/config.php 文件引入memberlogin.class.php文件实现模拟登录和退出。 模拟会员登录代码 引入/memb

    2024年02月02日
    浏览(42)
  • 使用隧道HTTP时如何解决网站验证码的问题?

    使用代理时,有时候会遇到网站验证码的问题。验证码是为了防止机器人访问或恶意行为而设置的一种验证机制。当使用代理时,由于请求的源IP地址被更改,可能会触发网站的验证码机制。以下是解决网站验证码问题的几种方法: 1. 使用高匿代理服务器:选择高匿代理服务

    2024年02月14日
    浏览(37)
  • Python爬虫之极验滑动验证码的识别

    上节我们了解了可以直接利用 tesserocr 来识别简单的图形验证码。近几年出现了一些新型验证码,其中比较有代表性的就是极验验证码,它需要拖动拼合滑块才可以完成验证,相对图形验证码来说识别难度上升了几个等级。本节将讲解极验验证码的识别过程。 1. 本节目标 我们

    2024年02月22日
    浏览(53)
  • 使用Selenium破解滑动验证码的原理及解决思路

    1、获取页面元素信息: 使用Selenium打开目标网页,并通过相关方法获取滑块、背景图等元素的位置和属性信息。可以使用Selenium提供的定位方法(如xpath、CSS选择器等)来找到这些元素。 可以使用find_element_by_xpath或find_element_by_css_selector等方法来获取滑块和背景图元素的位置和

    2024年02月09日
    浏览(59)
  • Python scrapy爬取带验证码的列表数据

    首先所需要的环境:(我用的是Python2的,可以选择python3,具体遇到的问题自行解决,目前我这边几百万的数据量爬取) 环境: 直接贴代码具体需要注意的特殊颜色标出有注释 pipelines存数据库这个就不说了根据自己的业务 注:目前我网站验证码比较简单可以直接使用pytess

    2024年01月18日
    浏览(38)
  • 【开发篇】十、Spring缓存:手机验证码的生成与校验

    缓存是一种 介于数据永久存储介质与数据应用之间 的数据 临时存储 介质 使用缓存可以有效的 减少低速数据读取过程的次数(例如磁盘IO) ,提高系统性能 缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以 提供临时的数据存储空间 注意最后这条, 缓存的不一

    2024年02月07日
    浏览(40)
  • DedeCMS织梦自定义表单增加验证码的实例代码

    DedeCMS织梦验证码主要的作用就是防止一些用户的恶意提交,在很多的地方都会有验证码的出现,自定义表单也是在很多的地方都需要用到,但是默认的自定义表单是没有验证码的,这里介绍的方法就可以让大家自己添加验证码的功能。   1、先进入DedeCMS后台生成自定义表单。

    2024年02月03日
    浏览(39)
  • selenium的滑块验证码的模拟登录(猪八戒网站)

    一、登录网址跳转到滑块验证码界面 登录网址: url=https://account.zbj.com/login 先拿到这个标签,在跳转到滑块验证码界面。 跳转出的结果图:  二、验证码图片的处理 验证码图片有缺口图、滑块图、完整图,三张构成。 逻辑思想:1.让滑块隐藏,截取缺口图;            

    2023年04月09日
    浏览(37)
  • 对有验证码的后台网页进行爆破-captcha-killer-modified

    实例:以pikachu靶场为目标 攻击目标url:http://xxxx/pikachu-master/vul/burteforce/bf_server.php(xxxx为自己的靶机地址,我的就是127.0.0.1) 攻击目标的验证码图片接口的url:http://127.0.0.1/pikachu-master/inc/showvcode.php 通过burp工具抓包(设置burp代理之后,点击login抓包包) 右击选择发送到captcha

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包