迁移指南

从 Turnstile 迁移到 CaptchaLa

10 分钟内即插即用完成替换。表单照旧,摆脱对 Cloudflare 的依赖,获得验证兜底与中国大陆节点。

TTurnstileCurrent setup~10 minCaptchaLaDrop-in target

代码改动长这样

Before — Turnstile
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
After — CaptchaLa
<button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
  loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
    .onSuccess(res => onToken(res.token))
    .bindTo('#login-btn'));
</script>
Before — Turnstile server verify (Node)
const res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    secret: process.env.TURNSTILE_SECRET,
    response: req.body['cf-turnstile-response'],
  }),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })
After — CaptchaLa server verify (Node)
const res = await fetch('https://apiv1.captcha.la/v1/validate', {
  method: 'POST',
  headers: {
    'X-App-Key': process.env.CAPTCHALA_APP_KEY,
    'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })

迁移步骤

  1. 1

    注册并取得你的 App Key + Secret

    创建免费 CaptchaLa 账号、添加一个站点,拷贝 App Key(公开)与 App Secret(服务器端)。无需 Cloudflare 账号。

  2. 2

    替换组件标签

    把 cf-turnstile 换成 captchala,data-sitekey 换成 data-app-key,并把 script src 改成我们的 CDN。组件形态(一个 div 占位 + 一个 script 标签)维持不变。

  3. 3

    更新隐藏字段名称

    Turnstile 会注入 cf-turnstile-response,CaptchaLa 注入 captchala-token。多数表单处理程序不会依名称读取该字段,但如果你的会,改一处常数即可。

  4. 4

    更新服务器验证调用

    将端点改为 apiv1.captcha.la/v1/validate。我们接受 JSON(Turnstile 用 form-urlencoded),因此要更新 Content-Type 与 body 结构。回应仍回传 valid 旗标(data.valid)供你的分支逻辑使用。

  5. 5

    逐步上线

    多数表单先维持 Turnstile,先在一个低流量表单上换成 CaptchaLa。观察一天的转化与验证率,满意后再扩大——没有最低消费、没有合约。

常见问题

我可以保留 Cloudflare CDN 同时使用 CaptchaLa 吗?

可以。CaptchaLa 独立于任何 CDN——我们多数客户保留 Cloudflare 做 CDN,并用 CaptchaLa 做验证。两层互不冲突。

我的 Cloudflare 机器人检测规则还会生效吗?

会——那些是 Cloudflare WAF/Bot Management 功能,与 Turnstile 分开。移除 Turnstile 组件不会影响你的 Cloudflare zone 设置。

如果我是通过 Cloudflare Workers 使用 Turnstile 呢?

在 Worker 端的迁移方式相同。把 Turnstile 的 fetch 换成 CaptchaLa 的 fetch。文档里有一段与 Workers runtime 兼容的程序片段。