HCaptcha
一个简单的 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
配置
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
SecretKey | string | 从 HCaptcha 管理面板获得的秘密密钥。此字段不能为空。 | "" |
ResponseKeyFunc | func(fiber.Ctx) (string, error) | ResponseKeyFunc 应该返回用户成功通过验证码后 HCaptcha 提供的 token。默认情况下,它通过解析 JSON 请求从请求体中获取 token,并返回 hcaptcha_token 字段。 | hcaptcha.DefaultResponseKeyFunc |
SiteVerifyURL | string | 此属性指定用于 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"))
}