整合指南

用平台統一的驗證元件擋掉大量註冊/登入嘗試,不必自己申請 Turnstile 或 CAPTCHA 金鑰。
你會做出什麼

一次通過驗證拿到 captcha_ticket,並在註冊或登入請求裡帶上它。

需要什麼憑證

免憑證公開端點,不需要 client_secret;若 body 需要 client_id,直接放在 body 即可。

做完會看到

POST /v1/captcha/web/verify 回 {"ok":true,"captcha_ticket":"ct_..."};把 ticket 帶進登入請求後,原本被擋的請求開始成功。

本篇大綱(7 節)
  1. 這篇會帶你做到什麼
  2. 先打這 2 支就好
  3. 第 1 步:問平台「我該用哪一種」
  4. 第 2 步:拿到 ticket
  5. 第 3 步:帶著 ticket 送出請求
  6. 什麼時候會需要它
  7. 常見錯誤

這篇會帶你做到什麼

在你自己的網頁上放一個驗證元件,通過後拿到 captcha_ticket,再把 ticket 一起送進登入或註冊。

重點:驗證供應商(Turnstile/ALTCHA/Cap)由平台統一管理,你不需要申請任何第三方金鑰。

先打這 2 支就好

順序端點做什麼
1GET /v1/captcha/web/bootstrap?client_id=...拿你的 App 該用哪個供應商、以及前端設定
2POST /v1/captcha/web/verify把 widget 產生的 token 換成 captcha_ticket

設定層面(要不要啟用、哪種供應商):GET /v1/captcha/config,需要 App 金鑰。

第 1 步:問平台「我該用哪一種」

curl -s "https://api.hsystem.halphastech.com/v1/captcha/web/bootstrap?client_id=YOUR_CLIENT_ID"

回應會告訴你供應商種類與前端需要的參數(例如 site key)。不要在前端寫死供應商——換供應商時你的程式不該跟著改。

第 2 步:拿到 ticket

使用者完成元件上的驗證後,前端把供應商給的 token 換成平台的 ticket:

curl -s -X POST https://api.hsystem.halphastech.com/v1/captcha/web/verify \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "YOUR_CLIENT_ID",
    "token": "供應商回傳的 token",
    "purpose": "register"
  }'
{ "ok": true, "captcha_ticket": "ct_demo_123", "score": 0.9 }

purpose 要用你真正的情境(register/login 等)。ticket 通常只能用一次、且有時效,失敗就重新驗證,不要重送同一張。

第 3 步:帶著 ticket 送出請求

把你原本的註冊/登入請求,加上 captcha_ticket 欄位即可。被擋下時的回應會是 4xx 並在 code 說明原因,對照錯誤碼處理:

  • ticket 過期:重新拿一張。
  • 分數太低:換一個驗證方式,或先確認是不是有自動化流量。

什麼時候會需要它

  • 註冊一直被灌假帳號。
  • 登入有密碼猜測攻擊。
  • 寄驗證碼/簡訊的花費突然暴增(簡訊尤其貴)。

常見錯誤

  • 在自己的前端接第三方金鑰:不需要,也不該;一律走 bootstrap。
  • 把 ticket 存起來重複使用:不行,它是一次性的。
  • 以為驗證過就等於登入:ticket 只是「這是真人」的證明,身份驗證仍然是登入流程的事。

這篇用到的接口

參數、回應與錯誤碼看文件;想先看回應長什麼樣,直接開 Playground 的模擬模式。