遷移指南

從 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 相容的程式片段。