这可能是开源界最好用的行为验证码工具

1,141 阅读3分钟

  • 💂 个人网站: IT知识小屋
  • 🤟 版权: 本文由【IT学习日记】原创、需要转载请联系博主
  • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦

写在前面

大家好,这里是IT学习日记。今日推荐项目:tianai-captcha行为验证码工具

1000+优质开源项目推荐进度:6/1000。如需更多类型优质项目推荐,请在文章后留言。

工具简介

tianai-captcha行为验证码工具:分为 Go 和 Java 两个版本。支持多种验证方式,包括随机验证、曲线匹配、滑块验证、增强版滑块验证、旋转验证、滑动还原、角度验证、刮刮乐、文字点选、图标点选及语序点选等。

行为验证码工具

该系统能够快速集成到个人项目或系统中,显著提高开发效率。

功能展示

  • 随机型验证码

随机型验证码

  • 曲线匹配验证码

曲线匹配验证码

  • 滑动验证增强版验证码

滑动验证增强版验证码

  • 滑块验证码

滑块验证码

  • 旋转验证码

image

  • 滑动还原验证码

滑动还原验证码

  • 角度验验证码

角度验验证码

  • 刮刮乐验验证码

刮刮乐验验证码

  • 文字点选验证码

文字点选验证码

  • 图标验证码

图标验证码

架构设计

tianai-captcha 验证码整体分为 生成器(ImageCaptchaGenerator)、校验器(ImageCaptchaValidator)、资源管理器(ImageCaptchaResourceManager) 其中生成器、校验器、资源管理器等都是基于接口模式实现可插拔的,可以替换为自定义实现,灵活度高

  • 生成器 (ImageCaptchaGenerator)
    主要负责生成行为验证码所需的图片。

  • 校验器 (ImageCaptchaValidator)
    主要负责校验用户滑动的行为轨迹是否合规。

  • 资源管理器 (ImageCaptchaResourceManager)
    主要负责读取验证码背景图片和模板图片等。

    • 资源存储 (ResourceStore)
      负责存储背景图和模板图。

    • 资源提供者 (ResourceProvider)
      负责将资源存储器中对应的资源转换为文件流。一般资源存储器中存储的是图片的 URL 地址或 ID,资源提供者则负责将 URL 或其他 ID 转换为真正的图片文件。

  • 图片转换器 (ImageTransform)
    主要负责将图片文件流转换成字符串类型,可以是 Base64 格式、URL 或其他加密格式,默认实现为 Base64 格式。

工具集成

引入依赖

<!-- maven 导入 -->
<dependency>
    <groupId>cloud.tianai.captcha</groupId>
    <artifactId>tianai-captcha</artifactId>
    <version>1.4.1</version>
</dependency>

  • 使用 ImageCaptchaGenerator生成器生成验证码
public class Test {
    public static void main(String[] args) throws InterruptedException {
        ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager();
        ImageTransform imageTransform = new Base64ImageTransform();
        ImageCaptchaGenerator imageCaptchaGenerator = new MultiImageCaptchaGenerator(imageCaptchaResourceManager,imageTransform).init(true);
        /*
                生成滑块验证码图片, 可选项
                SLIDER (滑块验证码)
                ROTATE (旋转验证码)
                CONCAT (滑动还原验证码)
                WORD_IMAGE_CLICK (文字点选验证码)

                更多验证码支持 详见 cloud.tianai.captcha.common.constant.CaptchaTypeConstant
         */
        ImageCaptchaInfo imageCaptchaInfo = imageCaptchaGenerator.generateCaptchaImage(CaptchaTypeConstant.SLIDER);
        System.out.println(imageCaptchaInfo);

        // 负责计算一些数据存到缓存中,用于校验使用
        // ImageCaptchaValidator负责校验用户滑动滑块是否正确和生成滑块的一些校验数据; 比如滑块到凹槽的百分比值
        ImageCaptchaValidator imageCaptchaValidator = new BasicCaptchaTrackValidator();
        // 这个map数据应该存到缓存中,校验的时候需要用到该数据
        Map<String, Object> map = imageCaptchaValidator.generateImageCaptchaValidData(imageCaptchaInfo);
    }
}

  • 使用ImageCaptchaValidator校验器 验证
public class Test2 {
    public static void main(String[] args) {
        BasicCaptchaTrackValidator sliderCaptchaValidator = new BasicCaptchaTrackValidator();

        ImageCaptchaTrack imageCaptchaTrack = null;
        Map<String, Object> map = null;
        Float percentage = null;
        // 用户传来的行为轨迹和进行校验
        // - imageCaptchaTrack为前端传来的滑动轨迹数据
        // - map 为生成验证码时缓存的map数据
        boolean check = sliderCaptchaValidator.valid(imageCaptchaTrack, map).isSuccess();
//        // 如果只想校验用户是否滑到指定凹槽即可,也可以使用
//        // - 参数1 用户传来的百分比数据
//        // - 参数2 生成滑块是真实的百分比数据
        check = sliderCaptchaValidator.checkPercentage(0.2f, percentage);
    }
}

工具获取

工具下载gitee.com/dromara/tia…

在线体验captcha.tianai.cloud/

如果这篇文章对您有帮助,请**“彦祖们”**一定帮我点个 “关注”“点赞”,这对我非常重要。我将会继续推荐更多优质项目和新闻。