go-captcha

行为验证码 Go 库
授权协议 MIT
开发语言 Google Go
所属分类 Web应用开发、 验证码(Captcha)
软件类型 开源软件
地区 国产
投 递 者 卫诚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

相关连接

Github:https://github.com/wenlng/go-captcha

Gitee:https://gitee.com/wenlng/go-captcha

Vue实例代码:https://github.com/wenlng/go-captcha-vue

React实例代码:https://github.com/wenlng/go-captcha-react

在线演示:http://47.104.180.148:8081/go_captcha_demo

作者网站:http://witkeycode.com

安装模块

go get -u github.com/wenlng/go-captcha

引入模块

package main

import "github.com/wenlng/go-captcha/captcha"

快速使用

package main
import (
    "fmt"
    "github.com/wenlng/go-captcha/captcha"
)

func main(){
    // Captcha Single Instances
    capt := captcha.GetCaptcha()
    
    // Generate Captcha
    dots, b64, tb64, key, err := capt.Generate()
    if err != nil {
        panic(err)
        return
    }
    
    // Main image base64 code
    fmt.Println(len(b64))    
    // Thumb image base64 code
    fmt.Println(len(tb64))    
    // Only key
    fmt.Println(key)    
    // Dot data For verification
    fmt.Println(dots)
}

创建实例或获取单例实例

package main
import (
    "fmt"
    "github.com/wenlng/go-captcha/captcha"
)

func main(){
	 // Captcha Instances
    // capt := captcha.NewCaptcha() 
    
    // Captcha Single Instances
    capt := captcha.GetCaptcha()

    // ====================================================
    fmt.Println(capt)

}

验证码配置项

v1.2.3版本后大图默认尺寸为:300×240px,小图默认尺寸为:150×40px。

文本相关配置

默认情况下内置了定制的字体。如果设置了其他中文的文字,则可能需要设置字体文件。

package main
import (
    "fmt"
    "github.com/wenlng/go-captcha/captcha"
)

func main(){
    capt := captcha.GetCaptcha()
    
    // ====================================================
    // Method: SetRangChars (chars []string) error;
    // Desc: 设置验证码文本随机种子
    // ====================================================
    // 字符
    //chars := "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    //_ = capt.SetRangChars(strings.Split(chars, ""))
    
    // 双字母
    //chars := []string{"HE","CA","WO","NE","HT","IE","PG","GI","CH","CO","DA"}
    //_ = capt.SetRangChars(chars)

    // 汉字
    chars := []string{"你","好","呀","这","是","点","击","验","证","码","哟"}
    _ = capt.SetRangChars(chars)

    // ====================================================
    fmt.Println(capt)
}

大图相关配置

package main
import (
    "fmt"
    "os"
    "golang.org/x/image/font"
    "github.com/wenlng/go-captcha/captcha"
)

func main(){
    capt := captcha.GetCaptcha()
    
    path, _ := os.Getwd()    
    // ====================================================
    // Method: SetBackground(color []string);
    // Desc: 设置验证码背景图
    // ====================================================
    capt.SetBackground([]string{
        path + "/__example/resources/images/1.jpg",
        path + "/__example/resources/images/2.jpg",
    })

    // ====================================================
    // Method: SetImageSize(size Size);
    // Desc: 设置验证码主图的尺寸
    // ====================================================
    capt.SetImageSize(captcha.Size{300, 300})

    // ====================================================
    // Method: SetImageQuality(val int);
    // Desc: 设置验证码主图清晰度,压缩级别范围1-5,QualityCompressNone无压缩,默认为最底压缩级别
    // ====================================================
    capt.SetImageQuality(captcha.QualityCompressNone)

    // ====================================================
    // Method: SetFontHinting(val font.Hinting);
    // Desc: 设置字体Hinting值 (HintingNone,HintingVertical,HintingFull)
    // ====================================================
    capt.SetFontHinting(font.HintingFull)

    // ====================================================
    // Method: SetTextRangLen(val captcha.RangeVal);
    // Desc: 设置验证码文本显示的总数随机范围
    // ====================================================
    capt.SetTextRangLen(captcha.RangeVal{6, 7})

    // ====================================================
    // Method: SetRangFontSize(val captcha.RangeVal);
    // Desc: 设置验证码文本的随机大小
    // ====================================================
    capt.SetRangFontSize(captcha.RangeVal{32, 42})
    
    // ====================================================
    // Method: SetTextRangFontColors(colors []string);
    // Desc: 设置验证码文本的随机十六进制颜色
    // ====================================================
    capt.SetTextRangFontColors([]string{
        "#1d3f84",
        "#3a6a1e",
    })

    // ====================================================
    // Method: SetImageFontAlpha(val float64);
    // Desc:设置验证码字体的透明度
    // ====================================================
    capt.SetImageFontAlpha(0.5)

    // ====================================================
    // Method: SetTextShadow(val bool);
    // Desc:设置字体阴影
    // ====================================================
    capt.SetTextShadow(true)

    // ====================================================
    // Method: SetTextShadowColor(val string);
    // Desc:设置字体阴影颜色
    // ====================================================
    capt.SetTextShadowColor("#101010")

    // ====================================================
    // Method: SetTextShadowPoint(val captcha.Point);
    // Desc:设置字体阴影偏移位置
    // ====================================================
    capt.SetTextShadowPoint(captcha.Point{1, 1})

    // ====================================================
    // Method: SetTextRangAnglePos(pos []captcha.RangeVal);
    // Desc:设置验证码文本的旋转角度
    // ====================================================
    capt.SetTextRangAnglePos([]captcha.RangeVal{
        {1, 15},
        {15, 30},
        {30, 45},
        {315, 330},
        {330, 345},
        {345, 359},
    })

    // ====================================================
    // Method: SetImageFontDistort(val int);
    // Desc:设置验证码字体的扭曲程度
    // ====================================================
    capt.SetImageFontDistort(captcha.DistortLevel2)

}

小图相关配置

package main
import (
    "fmt"
    "os"
    "github.com/wenlng/go-captcha/captcha"
)

func main(){
    capt := captcha.GetCaptcha()
    
    path, _ := os.Getwd()

    // ====================================================
    // Method: SetThumbSize(size Size);
    // Desc: 设置缩略图的尺寸
    // ====================================================
    capt.SetThumbSize(captcha.Size{150, 40})

    // ====================================================
    // Method: SetRangCheckTextLen(val captcha.RangeVal);
    // Desc:设置缩略图校验文本的随机长度范围
    // ====================================================
    capt.SetRangCheckTextLen(captcha.RangeVal{2, 4})

    // ====================================================
    // Method: SetRangCheckFontSize(val captcha.RangeVal);
    // Desc:设置缩略图校验文本的随机大小
    // ====================================================
    capt.SetRangCheckFontSize(captcha.RangeVal{24, 30})
    
    // ====================================================
    // Method: SetThumbTextRangFontColors(colors []string);
    // Desc: 设置缩略图文本的随机十六进制颜色
    // ====================================================
    capt.SetThumbTextRangFontColors([]string{
        "#1d3f84",
        "#3a6a1e",
    })
  
    // ====================================================
    // Method: SetThumbBgColors(colors []string);
    // Desc: 设置缩略图的背景随机十六进制颜色
    // ====================================================
    capt.SetThumbBgColors([]string{
        "#1d3f84",
        "#3a6a1e",
    })

    // ====================================================
    // Method: SetThumbBackground(colors []string);
    // Desc:设置缩略图的随机图像背景
    // ====================================================
    capt.SetThumbBackground([]string{
        path + "/__example/resources/images/r1.jpg",
        path + "/__example/resources/images/r2.jpg",
    })

    // ====================================================
    // Method: SetThumbBgDistort(val int);
    // Desc:设置缩略图背景的扭曲程度
    // ====================================================
    capt.SetThumbBgDistort(captcha.DistortLevel2)

    // ====================================================
    // Method: SetThumbFontDistort(val int);
    // Desc:设置缩略图字体的扭曲程度
    // ====================================================
    capt.SetThumbFontDistort(captcha.DistortLevel2)

    // ====================================================
    // Method: SetThumbBgCirclesNum(val int);
    // Desc:设置缩略图背景的圈点数
    // ====================================================
    capt.SetThumbBgCirclesNum(20)

    // ====================================================
    // Method: SetThumbBgSlimLineNum(val int);
    // Desc:设置缩略图背景的线条数
    // ====================================================
    capt.SetThumbBgSlimLineNum(3)
    
}

其它

package main
import (
    "fmt"
    "os"
    "github.com/wenlng/go-captcha/captcha"
)

func main(){
    capt := captcha.GetCaptcha()
    
    path, _ := os.Getwd()    
    // ====================================================
    // Method: ClearAssetCacheWithPath(paths []string) bool;
    // Desc: 根据路径消除对应的资源缓存
    // ====================================================
    capt.ClearAssetCacheWithPaths([]string{
    	path + "/__example/resources/images/1.jpg",
    	path + "/__example/resources/images/2.jpg",
    })     

    // ====================================================
    // Method: captcha.CheckPointDist(sx, sy, dx, dy, width, height int64) bool;
    // Desc: 校验点的位置
    // ====================================================
    captcha.CheckPointDist(0, 30, 0, 30, 30, 30)    

    // ====================================================
    // Method: captcha.CheckPointDistWithPadding(sx, sy, dx, dy, width, height, padding int64) bool;
    // Desc: 校验点的位置
    // ====================================================
    captcha.CheckPointDistWithPadding(0, 30, 0, 30, 30, 30, 5) 
}
  •         由于最近在集成这玩意儿的时候实在是报错报麻了,所以写一下笔记记录一下,如果有人跟我一样,集成这个东西的时候各种报错,可以往下翻一翻找一下有没有你遇到的情况。 首先准备东西: 插件集成 | RuoYi 这里边的集成aj-captcha实现滑块验证码部分里第五步有一个百度网盘链接,先下载以后有用。 aj-captcha源码下载:AJ-Captcha: 行为验证码(滑动拼图、点选文字),

  • 一、涉及的库 https://github.com/mojocn/base64Captcha 二、base64Captcha 的基本使用 1.引入captcha 引入captcha,在文件中 import ( "github.com/mojocn/base64Captcha" ) 然后 go mod tidy 2.定义 captcha model package models //验证码

  • gin+dchest/captcha package main import ( "bytes" "fmt" "github.com/dchest/captcha" "github.com/gin-gonic/gin" "net/http" "path" "strings" "time" ) type CaptchaResponse struct { CaptchaId st

  • 声明不止,继续 go go go !!! 昨天分享了iris框架中,如何使用Google的recaptcha。今天就一起分享学一学golang中如何使用图片验证码以及语音验证码,当然最开始我们还是要面向github编程了。 使用recaptcha 其实recaptcha的使用很简单,这里不使用iris框架,也很容易自己实现的。 https://github.com/haisum/recaptcha

  • Golang验证码 知识结构 gin session中间件 表单处理 路由 下载包 go get github.com/dchest/captcha 导包 import ( "bytes" "net/http" "time" "github.com/dchest/captcha" "github.com/gin-contrib/sessions" "github.com/gin-c

  • 1. go-micro 安装 1.1 安装protobuf go get -u github.com/golang/protobuf/proto go get -u github.com/golang/protobuf/protoc-gen-go go get github.com/asim/go-micro/cmd/protoc-gen-micro/v3 1.2 安装go-micro框架 go

 相关资料
  • DoitPHP扩展类Captcha用于验证码图片的生成,与验证码的验证 分析 。 类方法使用说明: 1、show($imageUrl = null) 显示验证码。 参数说明: $imageUrl : 验证码的背影图片路径。默认为空 2、setTextContent($content) 设置验证码内容。 参数说明: $content : 验证码内容 3、setTextColor($param) 设置

  • 由来 由于对验证码需求量巨大,且我之前项目中有所积累,因此在Hutool中加入验证码生成和校验功能。 介绍 验证码功能位于cn.hutool.captcha包中,核心接口为ICaptcha,此接口定义了以下方法: createCode 创建验证码,实现类需同时生成随机验证码字符串和验证码图片 getCode 获取验证码的文字内容 verify 验证验证码是否正确,建议忽略大小写 write 将验证

  • 本文向大家介绍python之验证码生成(gvcode与captcha),包括了python之验证码生成(gvcode与captcha)的使用技巧和注意事项,需要的朋友参考一下 今天向大家总结一下python在做项目时用到的验证码生成工具:gvcode与captcha gvcode 全称:graphic-verification-code 安装: 使用: 效果: captcha 安装: 使用: 效果

  • 本文向大家介绍Yii使用Captcha验证码的方法,包括了Yii使用Captcha验证码的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii使用Captcha验证码的方法。分享给大家供大家参考,具体如下: 详细代码可参考:yii自带的示例代码post项目,里面有一个contact表单用到了验证码. 1. Model: 将验证码加入UserLogin的一个属性: 2. Control

  • 我正在尝试使用公钥验证散列的ECDSA签名。我写了一个小的围棋程序,成功地做到了这一点,但是我不能把它移植到C语言中。 这是我的输入数据: < li >公钥:< code > mfkwewyhkozizj 0 caqyikozij0 dackcdqgaedd 9 vxm phjv 4 vofo 0 zofplr r5 iczxquxsr 9 eka ouo 9 b 7 wl 1 daggi 0 e

  • 本文向大家介绍php实现的Captcha验证码类实例,包括了php实现的Captcha验证码类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现的Captcha验证码类,在php程序设计中有着极其广泛的应用。分享给大家供大家参考。具体方法如下: 验证码类文件如下: demo示例程序如下: 相信本文所述对大家php程序设计的学习有一定的借鉴价值。