--- title: Pencegahan penipuan — Referensi verdict --- # Referensi verdict Setiap verdict Fraud Prevention — baik yang dikirim ke callback `onVerdict` Anda di [Web SDK](./web-sdk) maupun yang ditarik dari [Data API](./data-api) — adalah objek `BotVerdict` yang sama. Halaman ini mendokumentasikan setiap field dan cara menindaknya. ```json { "is_bot": false, "score": 18, "level": "low", "action": "record_only", "consistency": { "ok": true }, "degraded": false } ``` ## Field | Field | Tipe | Deskripsi | | --- | --- | --- | | `is_bot` | boolean | Verdict utama. `true` = kunjungan dinilai sebagai trafik otomatis atau tidak valid; `false` = tampak seperti orang sungguhan. Ini adalah field tunggal yang menjadi dasar percabangan sebagian besar integrasi. | | `score` | number (0–100) | Seberapa mencurigakan kunjungan tersebut. **Semakin tinggi berarti semakin mencurigakan.** Gunakan untuk menetapkan ambang batas Anda sendiri — mis. mengeluarkan kunjungan di atas titik potong yang Anda pilih. Nilai persisnya dihasilkan oleh model risiko kami dan tidak dimaksudkan untuk direkayasa balik. | | `level` | enum | Pita kasar dari `score`: `low`, `medium`, `high`, `critical`. Praktis ketika Anda menginginkan kelompok alih-alih angka mentah. | | `action` | enum | **Penanganan yang kami rekomendasikan** untuk kunjungan: `record_only`, `challenge`, atau `flag`. Lihat di bawah. | | `consistency` | object | Kesimpulan konsistensi lintas-sinyal. Baca `consistency.ok` (boolean): `true` = sinyal kunjungan selaras sebagaimana diharapkan; `false` = ada yang tidak cocok dan kunjungan layak diperiksa lebih lanjut. Rincian internal di balik kesimpulan ini tidak diekspos. | | `degraded` | boolean | `true` ketika verdict tidak dapat dihitung sepenuhnya (layanan tidak terjangkau, error, dll.) dan fallback konservatif dikembalikan. Perlakukan verdict degraded sebagai "tidak diketahui", bukan "bersih". | ## `action` — apa yang harus dilakukan `action` adalah rekomendasi kami; Anda tetap mengendalikan keputusan akhir. | `action` | Arti | Apa yang harus dilakukan | | --- | --- | --- | | `record_only` | Kunjungan tampak normal. | Lanjutkan seperti biasa. Cukup catat verdict untuk pelaporan dan rekonsiliasi. | | `flag` | Kunjungan mencurigakan tetapi belum pasti buruk. | Tetap sajikan halaman, tetapi tandai kunjungan sebagai kualitas rendah — keluarkan dari metrik Anda, pisahkan dari alur hilir, dan pertimbangkan dalam keputusan Anda sendiri (mis. atribusi konversi atau seberapa besar Anda mempercayai kunjungan tersebut). | | `challenge` | Kunjungan berisiko tinggi. | Minta satu verifikasi tambahan sebelum memperlakukan pengunjung sebagai manusia. Dengan `escalate: true` pada Web SDK, ini ditangani untuk Anda (lihat [Eskalasi](./web-sdk#eskalasi)); jika tidak, terapkan gerbang Anda sendiri. | ## Action penanganan yang dapat dikonfigurasi Apa yang dilaporkan `action` untuk kunjungan **berisiko tinggi** adalah **konfigurasi per-aplikasi**, diatur di dashboard pada detail aplikasi Anda. Verdict bersifat **otoritatif di server**: `action` baru menjadi `challenge` atau `flag` ketika kunjungan mencapai pita berisiko tinggi **dan** aplikasi Anda dikonfigurasi dengan action yang sesuai. Di bawah pita itu, verdict tetap `record_only`. | Pengaturan | `action` yang dikembalikan pada risiko tinggi | Arti | | --- | --- | --- | | `record_only` (default) | `record_only` | Hanya mencatat. Verdict dicatat untuk pelaporan dan rekonsiliasi; tidak ada yang diminta dari pengunjung. | | `challenge` | `challenge` | Memicu CAPTCHA verifikasi ulang. Web SDK memunculkan challenge (penataannya dikendalikan oleh `challengeConfig` SDK). | | `flag` | `flag` | Menandai kunjungan. Verdict membawa `flag`; integrasi Anda memutuskan cara menindaknya (blokir / pisahkan / tangani). | Karena keputusan dibuat di sisi server, kode Anda tetap sederhana: baca `verdict.action` di `onVerdict` dan tindaki — lanjutkan, blokir, atau biarkan SDK menampilkan challenge. Anda tidak perlu menurunkan ulang risiko sendiri. ### `escalate_result` Muncul setelah eskalasi captcha terkelola berjalan — yaitu ketika `action` bernilai `challenge` dan SDK menjalankan captcha. `null` jika tidak ada eskalasi yang berjalan. Juga dikirim ke `onEscalateDone(passed, detail)`. | field | deskripsi | |---|---| | `passed` | apakah pengunjung lolos captcha | | `token` | captcha pass token — **verifikasi di sisi server** untuk memastikan kelulusan (jangan hanya percaya `passed` dari klien) | | `challenge_id` | id challenge captcha | | `cid` | click id yang terkait dengan eskalasi ini, jika ada click token | ## `level` vs `score` `level` hanyalah pengelompokan dari `score`, disediakan untuk kemudahan: | `level` | Gunakan ketika | | --- | --- | | `low` | Perlakukan sebagai trafik bersih. | | `medium` | Ambang — boleh dicatat, pertimbangkan mengeluarkan dari funnel bernilai tinggi. | | `high` | Sangat mencurigakan — tandai dan keluarkan. | | `critical` | Hampir pasti tidak valid — tandai/keluarkan dan, idealnya, eskalasikan. | ::: tip Pilih field yang sesuai dengan pipeline Anda - Gerbang ya/tidak sederhana → bercabang pada **`is_bot`**. - Berbasis rekomendasi → bercabang pada **`action`**. - Ambang kustom → bercabang pada **`score`** (atau **`level`** untuk kelompok). ::: ## Menangani verdict degraded Ketika `degraded` bernilai `true`, verdict tidak dihitung sepenuhnya. Fallback-nya sengaja dibuat konservatif (`is_bot: false`, `action: record_only`) sehingga pengguna nyata tidak pernah diblokir. Untuk pelaporan, perlakukan ini sebagai **tidak diketahui** alih-alih menghitungnya sebagai trafik yang dipastikan bersih. ## Langkah berikutnya - [Web SDK](./web-sdk) — menerima verdict pada halaman Anda - [Data API](./data-api) — tarik verdict dan statistik di sisi server