专为自由职业、独立开发者提供技能分享交流学习成长的平台,按 Ctrl+D 收藏我们
关于 积分 赞助 社群 投稿

爱网赚i5z.net

  • 首页
  • 发现
    • 有趣产品
    • 项目分享
    • 技能分享
    • 必备工具
    • 苏米杂谈
  • 独立开发者
    • 开发者周刊
    • 开发者故事
  • 实用资源
    • 建站资源
    • 精品教程
    • 域名优惠
    • VPS优惠
  • 独立开发导航
  • 更多
    • 标签云
    • 排行榜
    • 查域名
    • 留言板
    • 小卖铺
  • 登录
  • 首页
  • 发现
    • 有趣产品
    • 项目分享
    • 技能分享
    • 必备工具
    • 苏米杂谈
  • 独立开发者
    • 开发者周刊
    • 开发者故事
  • 实用资源
    • 建站资源
    • 精品教程
    • 域名优惠
    • VPS优惠
  • 独立开发导航
  • 更多
    • 标签云
    • 排行榜
    • 查域名
    • 留言板
    • 小卖铺
当前位置: 首页 » 建站资源

Happy-Captcha:一款基于JAVA实现的开源免费验证码系统,1行代码得到炫酷的验证码

2小时前 2 0

今天苏米要分享的这个独立开发者作品,非常值得学习。对我们做站点、做后端的同学来说,验证码是“成本小、收益大”的一环:拦住恶意请求、减轻服务器压力、保护用户数据。

而这款工具的亮点在于——上手几乎零门槛,1 行代码就能跑起来,细节也做得很到位。

简介

Happy-Captcha 是一款基于 Java 实现的免费开源验证码工具,目标很简单:用最少的代码,搞定最丰富的验证码形态。

它支持“图片”和“动画”两种呈现方式,内置多种内容类型(数字、字母、汉字、算术表达式等),并提供丰富的 API,方便自定义样式、尺寸、字体等参数,覆盖后端常见业务场景。

  • 呈现方式:图片、动画两种
  • 自定义项:验证码内容类型、长度、宽高、字体等
  • 使用门槛:仅需提供 request/response 即可输出验证码

苏米的使用体验:默认参数已满足大多数业务,一行链式调用就能输出“还挺好看”的验证码图片;要做细节定制,也有足够钩子。

验证码形式

内容类型非常全,覆盖 12 种常见组合:

  • 中文(收录 3500 常用汉字)
  • 阿拉伯数字(0~9)
  • 中文数字(零至九,简体)
  • 中文大写数字(零至玖,繁体)
  • 数字与字母混合(0~9 + a~z + A~Z)
  • 数字 + 小写字母混合
  • 数字 + 大写字母混合
  • 纯小写字母
  • 纯大写字母
  • 大小写字母混合
  • 算术表达式(阿拉伯数字表达式)
  • 算术表达式(中文表达式)

对应枚举值(供代码里使用):

  • DEFAULT:数字、大小写字母随机组合
  • ARITHMETIC:加、减、乘算术表达式
  • ARITHMETIC_ZH:中文简体加、减、乘算术表达式
  • CHINESE:常见汉字随机组合
  • NUMBER:0~9 数字随机组合
  • NUMBER_ZH_CN:中文数字(零至九)
  • NUMBER_ZH_HK:中文繁体数字(零至玖)
  • WORD:大小写字母随机组合
  • WORD_LOWER:小写字母随机组合
  • WORD_UPPER:大写字母随机组合
  • WORD_NUMBER_LOWER:数字 + 小写字母
  • WORD_NUMBER_UPPER:数字 + 大写字母

呈现风格(由 CaptchaStyle 提供):IMG(图片)、ANIM(动画)。

苏米建议:管理后台、频繁刷新场景可优先用 ARITHMETIC/ARITHMETIC_ZH,识别成本更低;对抗脚本建议 DEFAULT/混合字母数字并调高长度。

快速应用

1、引入依赖


  com.ramostear
  Happy-Captcha
  1.0.1

放在 Web 模块即可使用,兼容 Spring MVC/Spring Boot。

生产环境建议锁定版本,避免未测试的升级带来兼容问题。

2、生成验证码

只需 request 和 response 两个参数,其余都可用默认值:图片、字符集为 0~9、a~z、A~Z,长度 5,尺寸 160×50,字体为微软雅黑。

@Controller
public class HappyCaptchaController{
    @GetMapping("/captcha")
    public void happyCaptcha(HttpServletRequest request,HttpServletResponse response){
        HappyCaptcha.require(request,response).build().finish();
    }
}

注意:为避免浏览器或 CDN 缓存,建议在过滤器/拦截器里给该接口加上 no-cache 响应头。

如果前后端分离,前端拿到图片流或 img src 指向 /captcha 即可。

3、校验

第三个参数表示是否忽略大小写:true 忽略,false 严格匹配。

@Controller
public class CaptchaController{
    @PostMapping("/verify")
    public String verify(String code,HttpServletRequest request){
        boolean flag = HappyCaptcha.verification(request,code,true);
        if(flag){
            //Other operations...
        }
        return flag ? "ok" : "fail";
    }
}
  • 配合表单/接口调用时,建议增加基础限流:同 IP 连续失败 N 次后短暂封禁,防止撞库。
  • 用户通过后请尽快清理验证码,避免重复使用。

4、清理

验证码使用后可通过 remove() 清理(Session Key 为 "happy-captcha")。

@Controller
public class HappyCaptchaController{
    @GetMapping("/remove/captcha")
    public void removeCaptcha(HttpServletRequest request){
        HappyCaptcha.remove(request);
    }
}

也可在登录成功、验证码验证通过后手动移除 Session 中的 "happy-captcha"。

建议配合 Session 过期时间,避免验证码长期驻留。

高级特性

style():切换图片或动画(默认图片)。

HappyCaptcha.require(request,response)
        .style(CaptchaStyle.ANIM)
        .build().finish();
  • 动画样式更“活”,对简单脚本更友好,但体积稍大,页面要预留尺寸。

type():选择内容类型(共 12 种)。默认数字 + 大小写字母混合。

HappyCaptcha.require(request,response)
        .type(CaptchaType.CHINESE)
        .build().finish();
  • 面向中文用户的表单,可尝试 CHINESE 或中文算术,既友好又不容易被暴力枚举。

length():设置字符长度(默认 5)。

HappyCaptcha.require(request,response)
        .length(6)
        .build().finish();
  • 一般业务 4~6 位即可;风控较严的接口可考虑 6~8 位。

width():设置图片宽度(默认 160)。

HappyCaptcha.require(request,response)
        .width(180)
        .build().finish();

height():设置图片高度(默认 50)。

HappyCaptcha.require(request,response)
        .height(60)
        .build().finish();

font():设置字体(默认微软雅黑)。内置字体可通过 Fonts 类获取。

HappyCaptcha.require(request,response)
        .font(Fonts.getInstance().zhFont())
        .build().finish();

中文类验证码建议选择更清晰的中文字体,避免笔画密集导致识别困难。

链式调用:一次性配置多个属性。

@GetMapping("/captcha")
public void captcha(HttpServletRequest req,HttpServletResponse res){
    HappyCaptcha.require(req,res)
            .style(CaptchaStyle.ANIM)           // 动画
            .type(CaptchaType.CHINESE)          // 汉字
            .length(6)                          // 6 位
            .width(220)                         // 宽 220
            .height(80)                         // 高 80
            .font(Fonts.getInstance().zhFont()) // 字体
            .build().finish();                  // 输出
}

实战建议:对接登录/注册时,前端应提供“看不清?换一张”按钮,后端支持多次拉取;同时返回错误时提示“验证码不正确”,避免泄露校验规则细节。

开源地址

Github: https://github.com/ramostear/Happy-Captcha

声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
未经允许不得转载:Happy-Captcha:一款基于JAVA实现的开源免费验证码系统,1行代码得到炫酷的验证码
#Captcha #验证码系统 #开源免费 
收藏 1
推荐阅读
  • 21st.dev:独立开发者AI建站,高效开发前端必备组件库
  • 5个支付GitHub开源项目,独立开发轻松应对支付对接难题!
  • AllinSSL:一站式全生命周期管理SSL证书,让网站安全不再繁琐!
  • 独立开发用的上的全国及省市数据资源汇总
  • MkSaaS:完整的 AI SaaS 建站解决方案,高质量Next.js建站模板
评论 (0)
请登录后发表评论
分类精选
2025年18个icon图标库推荐:独立开发最值得收藏的建站素材资源
1761 4月前
21st.dev:独立开发者AI建站,高效开发前端必备组件库
811 4月前
BillionMail:打造属于你的开源邮件营销系统,轻松发亿封邮件,独立站出海必备
809 5月前
站长必备:10款免费可商用的中文字体下载推荐
800 2月前
Public APIs:开发者的公共API宝库,Star 350K!
755 4月前
8个独立开发者建站必备的设计资源,直接复制代码拿来就用
749 5月前
Bing Search API平替,秘塔搜索 API:性价比首选,还支持播客搜索
735 4月前
独立开发者建站必备:15个顶级UI设计资源站,用 AI 模板赋能你的 Vibecoding 界面设计
731 4月前
GitBase:10 分钟搭建一套导航+博客内容网站,独立开发者必备建站模板
727 6月前
AI 生图类 SaaS:这两个开源项目直接拿来改就能上线了!独立开发必备
711 4月前

文章目录

分类排行
1 Happy-Captcha:一款基于JAVA实现的开源免费验证码系统,1行代码得到炫酷的验证码
2 Isocons:3秒找到精准图标的效率神器
3 独立开发用的上的全国及省市数据资源汇总
4 1Panel:一键部署、全能管理,这个现代化的开源Linux运维面板,快速部署必备!
5 站长必备:10款免费可商用的中文字体下载推荐
6 5个支付GitHub开源项目,独立开发轻松应对支付对接难题!
7 i18n:翻译界的神器!一键实现国际化适配Vue和React
8 AllinSSL:一站式全生命周期管理SSL证书,让网站安全不再繁琐!
9 Tailspark:快速构建美观响应式网页的免费CSS组件资源平台
10 WR.DO:一站式域名服务平台,助你轻松管理短链、邮箱与文件存储
©2015-2024 i5z爱网赚出海分享 版权所有 · www. i5z.net 闽ICP备15002536号-6
免费影视导航 花式玩客 免费字体下载 产品经理导航 Axure RP 10 免费Axure模板 网赚分享 跨境数研所 聚玩盒子 申请友联