Turnstile 人机验证
Cloudflare Turnstile 是免费的无感人机验证,与 Workers 同生态。cloud-r2pan 支持按触发模式 + 访问阈值规则化启用,避免对正常用户造成打扰。
1. 申请凭证
- Cloudflare 控制台左侧菜单 → Turnstile → Add site
- Site name 随意填写
- Domain 填你最终使用的域名(
*.workers.dev子域或自定义域) - 获取 SiteKey 和 Secret Key
2. 配置凭证
凭证有三层兜底,任选其一即可:
| 层级 | 位置 | 说明 |
|---|---|---|
① Cloudflare Secret turnstile_secret | Worker → Settings → Secrets | 必须,没有它 Turnstile 整体不生效 |
② Cloudflare Secret turnstile_sitekey | Worker → Settings → Secrets | 可选 |
| ③ 后台设置覆盖 | 管理后台 → 设置 | SiteKey 覆盖值;Secret 也可在后台填写(AES-GCM 加密存 D1) |
3. 触发模式
管理后台 → 设置 → Turnstile 模式:
| 模式 | 行为 |
|---|---|
off(默认) | 关闭 |
on_share | 打开分享页时触发 |
on_download | 点击下载按钮时触发 |
both | 打开分享页 + 下载双重校验 |
4. 访问阈值
| 设置项 | 默认值 | 说明 |
|---|---|---|
| 触发阈值 | 5 次/天 | 每 IP 每天访问分享页超过该次数后开始弹出验证;0 = 每次都弹 |
计数按「IP + 自然日」复合主键存储,跨天自动归零,无需清理任务。
5. 校验机制
采用前后端双重校验,缺其一直接 403:
- 前端:按模式在分享页加载时或点击下载时渲染 Turnstile widget
- 后端:将 token 提交 Cloudflare
siteverifyAPI 验签
TIP
有密码的分享在密码校验通过后颁发 24 小时 HMAC 下载令牌,令牌验证与 Turnstile 校验相互独立,二者叠加生效。