遷移指南

從 GeeTest 遷移到 CaptchaLa

自助定價、英文優先文件,用單一 token 取代四個隱藏欄位。10 分鐘內完成切換。

GeeTestCurrent setup~10 minCaptchaLaDrop-in target

程式碼改動長這樣

Before — GeeTest GT4
<div id="captcha"></div>
<script src="https://static.geetest.com/v4/gt4.js"></script>
<script>
  initGeetest4({ captchaId: 'YOUR_CAPTCHA_ID' }, function(captcha) {
    captcha.appendTo('#captcha')
    captcha.onSuccess(function() {
      var result = captcha.getValidate()
      document.getElementById('lot_number').value = result.lot_number
      document.getElementById('captcha_output').value = result.captcha_output
      document.getElementById('pass_token').value = result.pass_token
      document.getElementById('gen_time').value = result.gen_time
    })
  })
</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 — GeeTest server verify (Node)
const sign = crypto.createHmac('sha256', process.env.GEETEST_KEY)
  .update(req.body.lot_number).digest('hex')
const res = await fetch(`https://gcaptcha4.geetest.com/validate?captcha_id=${process.env.GEETEST_ID}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    lot_number: req.body.lot_number,
    captcha_output: req.body.captcha_output,
    pass_token: req.body.pass_token,
    gen_time: req.body.gen_time,
    sign_token: sign,
  }),
})
const data = await res.json()
if (data.result !== '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(伺服器端)。

  2. 2

    移除 GeeTest 初始化 JS

    刪除 initGeetest4 的呼叫與其 onSuccess 回呼。拿掉你原本填入的四個隱藏 input(lot_number、captcha_output、pass_token、gen_time)。

  3. 3

    加入 CaptchaLa 元件標籤

    用我們的 div + script 取代整個 GeeTest 區塊。無需 JS 設定——元件會依 data-app-key 自我初始化。

  4. 4

    簡化伺服器驗證

    把 GeeTest 的驗證(含 HMAC sign_token 計算、四欄位 body 與結果字串檢查)換成對 apiv1.captcha.la/v1/validate 的單次 JSON POST 與一個 valid 旗標(data.valid)。

  5. 5

    逐步上線

    一次切換一個表單。觀察轉化與驗證率。沒有最低消費或合約,分階段上線完全免費。

常見問題

CaptchaLa 在中國大陸也能運作得一樣好嗎?

可以。我們在中國大陸境內運營原生節點——真實用戶獲得與其他地區一樣的低延遲驗證。無需不同的 SDK、不需要另外計費。

我團隊習慣的 GeeTest 滑塊體驗呢?

CaptchaLa 在自適應系統中把滑塊納為驗證類型之一——它不是預設,但可用。多數團隊發現預設(低風險隱形 + 較高風險點選)比滑塊優先轉化更好。

風險打分的靈敏度有差異嗎?

GeeTest 的風險模型針對亞太流量型態調校。CaptchaLa 的是全球性的。如果你的流量以亞太為主,預期行為相當。如果你在亞太之外,可能會看到誤判明顯下降。