由于 Google reCAPTCHA 在国内访问受限,V2board 默认的注册验证码在部分网络环境下无法正常加载。Cloudflare Turnstile 在接口协议上兼容 reCAPTCHA,可作为直接替代方案,迁移过程仅涉及两个文件的修改。

1. 修改后端校验地址

编辑 vendor/google/recaptcha/src/ReCaptcha/ReCaptcha.php,将第 52 行的 SITE_VERIFY_URL 替换为 Turnstile 的校验端点:

public const SITE_VERIFY_URL = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';

Turnstile 的 siteverify 接口与 reCAPTCHA v2 的请求/响应结构保持一致,上层调用逻辑无需改动。

2. 替换前端加载脚本

编辑 public/theme/default/assets/umi.js,定位到第 18161 行,将 reCAPTCHA 的 api.js 引用替换为 Turnstile:

return "https://challenges.cloudflare.com/turnstile/v0/api.js?onload=".concat(x, "&render=explicit");

umi.js 已被压缩或经过自定义修改,可通过全局搜索 recaptcha/api.js 定位目标位置。

3. 配置 Turnstile 站点密钥

在 Cloudflare 控制台的 Turnstile 中新建站点,获取 Site Key 与 Secret Key,填入 V2board 后台原 reCAPTCHA 配置项。字段结构完全一致,数据库无需调整。

说明

  • Turnstile 默认采用无交互验证模式,用户端通常无需手动点击
  • 修改完成后若前端验证组件未更新,清理浏览器缓存或强制刷新 umi.js 即可