Skip to content

裁決欄位參考 ​

每一份反詐欺裁決——無論是透過 Web SDK 的 onVerdict 回呼送達, 還是從資料 API 拉取——都是同一個 BotVerdict 物件。本頁說明每個欄位 及其處理方式。

json
{
  "is_bot": false,
  "score": 18,
  "level": "low",
  "action": "record_only",
  "reasons": [],
  "consistency": { "ok": true },
  "degraded": false,
  "verdict_id": "vd_3f9c0a7e5b1d4c2a9e8f7b6a",
  "verdict_token": "vt1.eyJ2Ijoi...",
  "verdict_token_exp": 1767225600
}

欄位 ​

欄位型別說明
is_botboolean核心裁決。true = 該次訪問被判定為自動化或無效流量;false = 看起來像真人。這是大多數接入會據以分支的關鍵欄位。
scorenumber (0–100)訪問的可疑程度。越高越可疑。 用它設定你自己的閾值——例如剔除超過某個你選定閾值的訪問。具體數值由我們的風控模型產出,不應被反向推導。
level列舉score 的粗分檔:low、medium、high、critical。當你想用分桶而非原始數值時很方便。
action列舉我們對該次訪問的建議處理:record_only、challenge、flag 或 deny。見下文。遇到不認識的值請按 flag 處理,這樣以後新增取值時你的整合也不會出錯。
reasonsstring[]最多三個原因大類,說明裁決為何有風險。乾淨訪問為空陣列。
consistency物件一個跨訊號一致性結論。讀取 consistency.ok(布林值):true = 該次訪問的各訊號如預期般吻合;false = 有訊號對不上,值得額外審視。該結論背後的內部拆分不對外暴露。
degradedboolean當裁決無法完整計算(服務無法連線、出錯等)而回傳了保守兜底值時為 true。請把降級裁決當作「未知」而非「乾淨」。
verdict_idstring本次裁決的唯一 ID。之後可用它透過資料 API 查詢這條裁決。
verdict_tokenstring本次裁決的簽章憑證,供你的伺服器端校驗。見伺服器端校驗。兜底裁決不帶此欄位。
verdict_token_expnumberverdict_token 的過期時間(Unix 秒)。

action —— 該怎麼做 ​

action 是我們的建議;最終決定權仍在你手裡。

action含義該怎麼做
record_only訪問看起來正常。照常放行。僅記錄裁決用於報表與對帳。
flag可疑但未確鑿。繼續展示頁面,但把該次訪問標為低品質——從你的指標中剔除,從下游流程裡切出,並在你自己的決策中納入權重(例如轉換歸因或你對該次訪問的信任度)。
challenge訪問達到你設定的升級門檻(預設為高風險)。在把訪客當作真人之前要求其額外做一次驗證。應用程式的處理動作設為 challenge 時,Web SDK 會自動彈出驗證(見升級驗證);否則套用你自己的攔截。
deny命中了攔截規則,例如黑名單,或你設定為攔截的策略。不要提供受保護的內容,也不會彈驗證碼。舊版 SDK 會原樣透傳這個值,請在 onVerdict 裡處理。

可設定的處理動作 ​

對於高風險訪問,action 回傳什麼是按應用程式設定的,在主控台的應用程式詳情裡設定。 裁決是伺服器端權威的:只有當訪問達到高風險檔且你的應用程式設定了對應動作時, action 才會是 challenge 或 flag。未達該檔時,裁決始終為 record_only。

設定高風險時回傳的 action含義
record_only(預設)record_only僅記錄。裁決被記錄用於報表與對帳;不向訪客提出任何要求。
challengechallenge觸發驗證碼複驗。Web SDK 會彈出一次驗證碼(樣式由 SDK 的 challengeConfig 控制)。
flagflag標記該次訪問。裁決攜帶 flag;由你的整合自行決定如何處理(攔截 / 切分 / 處理)。

因為決策在伺服器端完成,你的程式碼可以保持簡單:在 onVerdict 裡讀取 verdict.action 並據此處理——放行、攔截,或讓 SDK 彈出驗證碼。你無需自己重新推導風險。

升級驗證門檻與題型 ​

處理動作設為 challenge 時,控制台同一位置還會出現兩項設定:

  • 升級驗證門檻:達到哪個風險等級就返回所設定的動作。預設為高風險及以上。嚴格模式下中風險訪問也會觸發:能攔下更多爬蟲和 AI 工具,但會有更多真實訪客看到驗證碼。
  • 升級驗證題型:升級時至少使用的驗證碼題型,可選滑塊(預設)、旋轉、點選、3D 點選。題型越強,自動化和 AI 工具越難通過。

escalate_result ​

在託管驗證碼升級跑過之後出現——即 action 為 challenge 且 SDK 彈了驗證碼時。沒有升級時為 null。同時透過 onEscalateDone(passed, detail) 回呼下發。

欄位說明
passed訪客是否通過了驗證碼
token驗證碼 pass token —— 請在伺服器端校驗它確認真的通過(不要只信用戶端的 passed)
challenge_id驗證碼 challenge id
cid本次升級關聯的點擊 id(若本次帶了 click token)

reasons —— 原因大類 ​

reasons 用大類說明一次訪問為什麼被判為有風險。最多三個,按強弱排序。不會包含具體訊號或分數構成。

大類含義
automation有自動化工具的跡象,例如腳本驅動或無頭瀏覽器。
network網路有風險或前後不一致,例如代理、機房或匿名網路,或命中了被封鎖的位址。
abnormal_requests請求模式異常,例如請求過於頻繁、多次失敗,或有自動化流量的歷史紀錄。
device裝置或其執行環境不可信,或無法識別。
behavior訪問行為不像真人,例如完全沒有互動,或連結被重複使用。
other其他原因,包括你自己設定的規則和兜底裁決。

這個列表用於報表和解釋,不建議在它上面寫規則;分支判斷請用 is_bot、action 或 score。以後可能新增大類。

伺服器端校驗 ​

頁面拿到的任何資料都可能被訪客竄改。如果你要做內容牆(只讓真人看到某個頁面、介面回應或下載),不要信任瀏覽器裡的 is_bot,而是把 verdict_token 交給你自己的伺服器端校驗:

  1. 在 onVerdict 裡把 verdict.verdict_token 傳給你的後端,例如放在請求標頭或 Cookie 裡。
  2. 後端帶上 token 和訪客 IP 呼叫 POST /v1/bot/verdict/verify。
  3. 只有回應為 valid: true、且裁決符合你的要求(例如 verdict.is_bot 為 false)時才回傳內容。

token 綁定你的應用程式、本次裁決和訪客所在網路,有效期較短(預設 10 分鐘)。預設可以重複校驗,一個 token 可以涵蓋一次訪問中的多次頁面請求。需要只用一次的場景(例如送出表單)請傳 consume: true。

如果訪客隨後通過了升級驗證碼,token 裡仍是原始裁決。請同時在伺服器端校驗 escalate_result 裡的驗證碼通過憑證。

level 與 score ​

level 只是 score 的分檔,為方便而提供:

level何時使用
low當作乾淨流量。
medium臨界——記錄無妨,可考慮從高價值漏斗中剔除。
high強可疑——標記並剔除。
critical幾乎確定無效——標記/剔除,並最好觸發升級驗證。

選擇適合你流水線的欄位

  • 簡單是/否攔截 → 用 is_bot 分支。
  • 按建議驅動 → 用 action 分支。
  • 自訂閾值 → 用 score 分支(或用 level 分桶)。

處理降級裁決 ​

當 degraded 為 true 時,裁決未被完整計算。兜底值刻意保守 (is_bot: false、action: record_only),因此真實使用者絕不會被誤攔。 在報表裡請把這類訪問當作未知,而不要計入「確認乾淨」的流量。

下一步 ​

  • Web SDK —— 在你的頁面接收裁決
  • 資料 API —— 伺服器端拉取裁決與統計

MIT-licensed examples · CaptchaLa is operated independently