跳至主内容
版本: websocket_v1.x.x

HCaptcha

Release Discord Test

一个简单的 HCaptcha 中间件,用于防止机器人攻击。

注意

需要 Go 1.21 及以上版本

安装

注意

此中间件仅支持 Fiber v3

go get -u github.com/gofiber/fiber/v3
go get -u github.com/gofiber/contrib/hcaptcha

签名

hcaptcha.New(config hcaptcha.Config) fiber.Handler

配置

属性类型描述默认值
SecretKeystring从 HCaptcha 管理面板获得的秘密密钥。此字段不能为空。""
ResponseKeyFuncfunc(fiber.Ctx) (string, error)ResponseKeyFunc 应该返回用户成功通过验证码后 HCaptcha 提供的 token。默认情况下,它通过解析 JSON 请求从请求体中获取 token,并返回 hcaptcha_token 字段。hcaptcha.DefaultResponseKeyFunc
SiteVerifyURLstring此属性指定用于 token 认证的 API 资源。https://api.hcaptcha.com/siteverify

示例

package main

import (
"github.com/gofiber/contrib/hcaptcha"
"github.com/gofiber/fiber/v3"
"log"
)

const (
TestSecretKey = "0x0000000000000000000000000000000000000000"
TestSiteKey = "20000000-ffff-ffff-ffff-000000000002"
)

func main() {
app := fiber.New()
captcha := hcaptcha.New(hcaptcha.Config{
// Must set the secret key
SecretKey: TestSecretKey,
})

app.Get("/api/", func(c fiber.Ctx) error {
return c.JSON(fiber.Map{
"hcaptcha_site_key": TestSiteKey,
})
})

app.Post("/api/robots-excluded", func(c fiber.Ctx) error {
return c.SendString("You are not a robot")
}, captcha)

log.Fatal(app.Listen(":3000"))
}