--- title: Fraud Prevention — Verdict Reference --- # Verdict Reference Setiap keputusan Fraud Prevention — sama ada dihantar ke panggil balik `onVerdict` anda dalam [Web SDK](./web-sdk) atau ditarik daripada [Data API](./data-api) — ialah objek `BotVerdict` yang sama. Halaman ini mendokumenkan setiap medan dan cara bertindak ke atasnya. ```json { "is_bot": false, "score": 18, "level": "low", "action": "record_only", "consistency": { "ok": true }, "degraded": false } ``` ## Medan | Medan | Jenis | Keterangan | | --- | --- | --- | | `is_bot` | boolean | Keputusan utama. `true` = lawatan dinilai sebagai trafik automatik atau tidak sah; `false` = ia kelihatan seperti orang sebenar. Inilah medan tunggal yang kebanyakan integrasi bercabang ke atasnya. | | `score` | number (0–100) | Betapa mencurigakan lawatan itu. **Lebih tinggi bermakna lebih mencurigakan.** Gunakannya untuk menetapkan ambang anda sendiri — cth. kecualikan lawatan melebihi had potong yang anda pilih. Nilai tepatnya dihasilkan oleh model risiko kami dan tidak bertujuan untuk dirungkai-balik. | | `level` | enum | Jalur kasar bagi `score`: `low`, `medium`, `high`, `critical`. Mudah apabila anda mahukan baldi (bucket) dan bukannya nombor mentah. | | `action` | enum | **Pengendalian yang disyorkan** kami untuk lawatan itu: `record_only`, `challenge`, atau `flag`. Lihat di bawah. | | `consistency` | object | Kesimpulan konsistensi merentas isyarat. Baca `consistency.ok` (boolean): `true` = isyarat lawatan sepadan seperti yang dijangka; `false` = sesuatu tidak menjadi dan lawatan itu wajar diteliti dengan lebih lanjut. Pecahan dalaman di sebalik kesimpulan ini tidak didedahkan. | | `degraded` | boolean | `true` apabila keputusan tidak dapat dikira sepenuhnya (perkhidmatan tidak dapat dicapai, ralat, dsb.) dan sandaran konservatif dikembalikan. Layan keputusan degraded sebagai "tidak diketahui", bukan "bersih". | ## `action` — apa yang perlu dilakukan `action` ialah cadangan kami; anda kekal mengawal keputusan akhir. | `action` | Maksud | Apa yang perlu dilakukan | | --- | --- | --- | | `record_only` | Lawatan kelihatan normal. | Teruskan seperti biasa. Cuma log keputusan untuk pelaporan dan penyelarasan. | | `flag` | Lawatan mencurigakan tetapi tidak pasti buruk secara muktamad. | Terus layan halaman, tetapi tandakan lawatan sebagai berkualiti rendah — kecualikannya daripada metrik anda, asingkannya daripada aliran hiliran, dan timbangkannya dalam keputusan anda sendiri (cth. atribusi penukaran atau sejauh mana anda mempercayai lawatan itu). | | `challenge` | Lawatan berisiko tinggi. | Minta satu pengesahan tambahan sebelum melayan pelawat sebagai manusia. Dengan `escalate: true` Web SDK, ini dikendalikan untuk anda (lihat [Escalation](./web-sdk#escalation)); jika tidak, gunakan pintu kawalan anda sendiri. | ## Tindakan pengendalian yang boleh dikonfigurasi Apa yang `action` laporkan untuk lawatan **berisiko tinggi** ialah **konfigurasi setiap aplikasi**, ditetapkan dalam papan pemuka di bawah butiran aplikasi anda. Keputusan bersifat **berwibawa-pelayan** (server-authoritative): `action` hanya menjadi `challenge` atau `flag` apabila lawatan mencapai jalur berisiko tinggi **dan** aplikasi anda dikonfigurasi dengan tindakan yang sepadan. Di bawah jalur itu, keputusan kekal `record_only`. | Tetapan | `action` dikembalikan pada risiko tinggi | Maksud | | --- | --- | --- | | `record_only` (lalai) | `record_only` | Rekod sahaja. Keputusan dilog untuk pelaporan dan penyelarasan; tiada apa yang diminta daripada pelawat. | | `challenge` | `challenge` | Cetuskan CAPTCHA pengesahan semula. Web SDK memunculkan satu challenge (gaya dikawal oleh `challengeConfig` SDK). | | `flag` | `flag` | Tandakan lawatan. Keputusan membawa `flag`; integrasi anda memutuskan cara bertindak ke atasnya (sekat / asing / kendalikan). | Kerana keputusan dibuat di bahagian pelayan, kod anda kekal mudah: baca `verdict.action` dalam `onVerdict` dan bertindak ke atasnya — teruskan, sekat, atau biarkan SDK mempersembahkan satu challenge. Anda tidak perlu menerbitkan semula risiko itu sendiri. ### `escalate_result` Hadir selepas eskalasi captcha terurus berjalan — iaitu apabila `action` ialah `challenge` dan SDK menjalankan captcha. `null` apabila tiada eskalasi berjalan. Turut dihantar ke `onEscalateDone(passed, detail)`. | medan | penerangan | |---|---| | `passed` | sama ada pelawat lulus captcha | | `token` | captcha pass token — **sahkannya di pihak pelayan** untuk mengesahkan kelulusan (jangan hanya percaya `passed` daripada klien) | | `challenge_id` | id challenge captcha | | `cid` | click id yang dikaitkan dengan eskalasi ini, jika click token hadir | ## `level` lwn `score` `level` hanyalah penjaluran bagi `score`, disediakan untuk kemudahan: | `level` | Gunakannya apabila | | --- | --- | | `low` | Layan sebagai trafik bersih. | | `medium` | Sempadan — baik untuk direkod, pertimbangkan untuk mengecualikan daripada corong bernilai tinggi. | | `high` | Sangat mencurigakan — tandai dan kecualikan. | | `critical` | Hampir pasti tidak sah — tandai/kecualikan dan, idealnya, eskalasikan. | ::: tip Pilih medan yang sesuai dengan saluran paip anda - Pintu ya/tidak yang mudah → bercabang pada **`is_bot`**. - Dipacu cadangan → bercabang pada **`action`**. - Ambang tersuai → bercabang pada **`score`** (atau **`level`** untuk baldi). ::: ## Mengendalikan keputusan degraded Apabila `degraded` ialah `true`, keputusan tidak dikira sepenuhnya. Sandaran sengaja dibuat konservatif (`is_bot: false`, `action: record_only`) supaya pengguna sebenar tidak pernah disekat. Untuk pelaporan, layan ini sebagai **tidak diketahui** dan bukan mengiranya sebagai trafik yang disahkan-bersih. ## Langkah seterusnya - [Web SDK](./web-sdk) — terima keputusan pada halaman anda - [Data API](./data-api) — tarik keputusan dan statistik di bahagian pelayan