亲手试一次
访客只需要轻轻一滑。
这就是正式接入使用的组件。访客滑动的同时,浏览器已在后台完成工作量证明;使用键盘、读屏器或开启“减少动态效果”的访客,会自动切换为无需操作的模式。
- 约 10 KB压缩后的组件体积
- 0Cookie 与浏览器存储
- 120 秒token 有效期,只能兑换一次
示例表单
创建一个账号
三步接入
改三处代码,
表单就有了守护。
- 添加站点在控制台填写域名,拿到 Site key 和 Secret。
- 放入组件服务端为每次提交创建一次性许可,页面用它渲染组件。
- 服务端校验提交时用 Secret 兑换 token,成功后再执行业务。
// 渲染表单前:为这次提交创建一次性许可
const nonce = crypto.randomUUID();
const intent = await fetch("https://captcha.moe/intents", {
method: "POST",
headers: {
authorization: `Bearer ${process.env.CAPTCHA_SECRET}`,
"content-type": "application/json",
},
body: JSON.stringify({ action: "signup", hostname: "example.com", nonce }),
}).then((res) => res.json());
// 保存 intent.intent_id 和 nonce,校验时要用
session.captcha = { intentId: intent.intent_id, nonce };从其他验证码迁移
熟悉的写法,多一道绑定。
用过 reCAPTCHA、Turnstile 或 hCaptcha,就已经会用 captcha.moe:组件、表单字段和服务端校验一一对应。新增的只有一步——渲染前由服务端创建许可,把这次验证和这次业务绑在一起,token 换到别的表单也不能用。
查看迁移指南 →| 对应项 | reCAPTCHA | Turnstile | hCaptcha | captcha.moe |
|---|---|---|---|---|
| 组件容器 | .g-recaptcha | .cf-turnstile | .h-captcha | .moe-captcha |
| 表单字段 | g-recaptcha-response | cf-turnstile-response | h-captcha-response | moe-captcha-response |
| Secret 放在 | 请求体 | 请求体 | 请求体 | Authorization 请求头 |
| 渲染前创建许可 | 不需要 | 不需要 | 不需要 | 需要,绑定业务动作与域名 |
尊重隐私
验证这一次访问,
不追踪背后的人。
- 不留痕基础组件不写入 Cookie、localStorage、sessionStorage 或 IndexedDB。
- 不画像不做设备指纹、行为生物识别,也不建立跨站用户画像。
- 少用地址网络地址只在处理请求时截断为前缀(IPv4 /24、IPv6 /48),用于绑定与限流;token 里不含访客地址。
- 不外联组件只连接验证服务本身,不加载第三方统计或广告脚本。
价格
每月前 100,000 次免费。
之后每 10,000 次服务端校验成功收费 $1。失败、过期和重复校验都不收费;预充值,不会自动扣款。
让你的网站,也轻一点。
注册后即可添加站点,免费额度每月自动到账。