HCaptcha
A simple HCaptcha middleware to prevent bot attacks.
note
Requires Go 1.25 and above
Compatible with Fiber v3.
Go version support
We only support the latest two versions of Go. Visit https://go.dev/doc/devel/release for more information.
Install
caution
This middleware only supports Fiber v3.
go get -u github.com/gofiber/fiber/v3
go get -u github.com/gofiber/contrib/v3/hcaptcha
Signature
hcaptcha.New(config hcaptcha.Config) fiber.Handler
Config
| Property | Type | Description | Default |
|---|---|---|---|
| SecretKey | string | The secret key you obtained from the HCaptcha admin panel. This field must not be empty. | "" |
| ResponseKeyFunc | func(fiber.Ctx) (string, error) | ResponseKeyFunc should return the token that captcha provides upon successful solving. By default, it gets the token from the body by parsing a JSON request and returns the hcaptcha_token field. | hcaptcha.DefaultResponseKeyFunc |
| SiteVerifyURL | string | This property specifies the API resource used for token authentication. | https://api.hcaptcha.com/siteverify |
Example
package main
import (
"github.com/gofiber/contrib/v3/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"))
}