介绍一个 golang 图像验证码,简单易用,高安全性的“行为式验证码”Go库

时间:2024-10-11 07:34:49

go-captcha

go-captcha, 一个简洁易用、交互友好、高安全性的点选行为验证码 Go 库 ,采用 “验证码展示-采集用户行为-验证行为数据” 为流程,用户无需键盘手动输入,极大优化传统验证码用户体验不佳的问题,支持PC端及移动端,带有与前端交互的DEMO。

  • Github:/wenlng/go-captcha
  • Go实例代码:/wenlng/go-captcha-example
  • Vue实例代码:/wenlng/go-captcha-vue
  • React实例代码:/wenlng/go-captcha-react
  • 在线演示:http://47.104.180.148:8081/go_captcha_demo
  • 作者网站:
Reward Support

Reward Support


中国Go模块代理

  • GoProxy /goproxy/
  • AliProxy: /goproxy/
  • OfficialProxy: /
  • ChinaProxy:
  • Other:
设置Go模块的代理
  • Window
$ set GO111MODULE=on
$ set GOPROXY=,direct

### The Golang 1.13+ can be executed directly
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=,direct
  • Linux or Mac
$ export GO111MODULE=on
$ export GOPROXY=,direct

### or
$ echo "export GO111MODULE=on" >> ~/.profile
$ echo "export GOPROXY=,direct" >> ~/.profile
$ source ~/.profile

依赖golang官方标准库

$ go get -u /golang/freetype
$ go get -u /x/crypto
$ go get -u /x/image

安装模块

$ go get -u /wenlng/go-captcha/captcha

引入模块

package main

import "/wenlng/go-captcha/captcha"

func main(){
   
   // ....
}

快速使用

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

func main(){
   
    // Captcha Single Instances
    capt := captcha.GetCaptcha()
    
    // 生成验证码
    dots, b64, tb64, key, err := capt.Generate()
    if err != nil {
   
        panic(err)
        return
    }
    
    // 主图base64
    fmt.Println(len(b64))
    
    // 缩略图base64
    fmt.Println(len(tb64))
    
    // 唯一key
    fmt.Println(key)
    
    // 文本位置验证数据
    fmt.Println(dots)
}

验证码实例

  • 创建实例或者获取单例模式的实例
package main
import (
    "fmt"
    "/wenlng/go-captcha/captcha"
)

func main(){
   
	// 创建验证码实例
    // capt := () 
    
    // 单例模式的验证码实例
    capt := captcha.GetCaptcha()

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

}

验证码配置

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

文本相关配置

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

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

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

    // 汉字
    chars := []string