Skip to content

Verdict リファレンス ​

すべての不正対策の判定は——Web SDK の onVerdict コールバックに渡されるものでも、 Data 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)アクセスがどの程度疑わしいか。高いほど疑わしい ことを意味します。これを使って独自のしきい値を設定できます——例えば、自分で選んだ基準値を超えるアクセスを除外する、など。正確な値は当方のリスクモデルによって生成されるもので、リバースエンジニアリングを意図したものではありません。
levelenumscore の大まかな帯:low、medium、high、critical。生の数値ではなくバケット単位で扱いたいときに便利です。
actionenumそのアクセスに対する当方の 推奨処理:record_only、challenge、flag、または deny。以下を参照してください。新しい値が追加されても連携が動作し続けるよう、未知の値は flag として扱ってください。
reasonsstring[]リスクのある判定を説明する、最大 3 つの大まかな理由カテゴリ。クリーンなアクセスでは空です。
consistencyobjectクロスシグナルの整合性に関する結論。consistency.ok(boolean)を読みます。true = アクセスのシグナルが想定どおり一致していること、false = 何かが噛み合わず、追加の精査に値することを表します。この結論の背後にある内部内訳は公開されません。
degradedboolean判定を完全に算出できず(サービス到達不可、エラーなど)、保守的なフォールバックが返された場合に true です。degraded 判定は「クリーン」ではなく「不明」として扱ってください。
verdict_idstringこの判定の一意な ID。後で Data API で判定を照会するのに使います。
verdict_tokenstringこの判定の署名付き証明で、あなたの サーバー が検証するためのものです。サーバーサイド検証を参照してください。フォールバック判定には含まれません。
verdict_token_expnumberverdict_token が失効する Unix 時刻(秒)。

action — どうするか ​

action は当方の推奨です。最終的な決定の主導権はあなたにあります。

action意味どうするか
record_onlyアクセスは正常に見えます。通常どおり進めます。レポーティングと突き合わせのために判定をログに残すだけです。
flagアクセスは疑わしいが、決定的に悪いとまでは言えません。ページの提供は続けつつ、そのアクセスを低品質として印を付けます——指標から除外する、下流フローからセグメント分離する、独自の判断(例:コンバージョンのアトリビューションや、そのアクセスをどの程度信頼するか)の中で重み付けする、といった対応をします。
challengeアクセスがチャレンジのしきい値に達しました(デフォルトでは高リスク)。訪問者を人間として扱う前に、もう 1 つの追加検証を求めます。アプリの処理アクションが challenge に設定されている場合は、Web SDK がこれを自動で実行します(エスカレーション を参照)。そうでなければ、独自のゲートを適用します。
denyアクセスがブロックルール(例:ブロックリストのエントリや、ブロックするよう設定したポリシー)に一致しました。保護されたコンテンツを提供しないでください。チャレンジは提示されません。古い SDK バージョンはこの値をそのまま渡すため、onVerdict で処理してください。

処理アクションの設定 ​

高リスク のアクセスに対して action が何を報告するかは、アプリごとの設定 であり、 ダッシュボードのアプリケーション詳細で設定します。判定は サーバー権威 です。action が challenge または flag になるのは、アクセスが高リスク帯に達し、かつ あなたのアプリが 該当するアクションで設定されている場合のみです。その帯より下では、判定は record_only の ままです。

設定高リスク時に返る action意味
record_only(デフォルト)record_only記録のみ。判定はレポーティングと突き合わせのためにログされ、訪問者には何も求めません。
challengechallenge再検証 CAPTCHA をトリガーします。Web SDK がチャレンジをポップアップします(スタイルは SDK の challengeConfig で制御されます)。
flagflagアクセスに印を付けます。判定は flag を帯び、それにどう対処するか(ブロック / セグメント分離 / 処理)はあなたの連携が決めます。

決定はサーバーサイドで行われるため、あなたのコードはシンプルなままで済みます。onVerdict で verdict.action を読み、それに対処するだけです——進める、ブロックする、あるいは SDK に チャレンジを提示させる。リスクを自分で再導出する必要はありません。

チャレンジのしきい値と種類 ​

処理アクションが challenge の場合、ダッシュボードの同じ場所にさらに 2 つの設定が表示されます。

  • チャレンジのしきい値 — 設定したアクションを返すリスクレベル。デフォルトは高リスク以上です。厳格モードでは中リスクの訪問にも適用されます。スクレイパーや AI エージェントをより多く止められますが、チャレンジが表示される実ユーザーも増えます。
  • チャレンジの種類 — エスカレーション時に表示する最低限の CAPTCHA 種類:スライダー(デフォルト)、回転、クリック、3D クリック。強い種類ほど自動化・AI ツールが解きにくくなります。

escalate_result ​

マネージド captcha のエスカレーションが実行された後に存在します——つまり action が challenge で、SDK が captcha を実行したときです。エスカレーションが実行されなかった場合は null。onEscalateDone(passed, detail) にも渡されます。

フィールド説明
passed訪問者が captcha を通過したかどうか
tokencaptcha の pass token —— 通過を確認するため サーバー側で検証してください(クライアントの passed だけを信用しないでください)
challenge_idcaptcha の challenge id
cidこのエスカレーションに紐づく click id(click token があった場合)

reasons — 理由カテゴリ ​

reasons は、アクセスがリスクありと見なされた理由を大まかに示します。最大 3 つの カテゴリを、強いものから順に含みます。個々のシグナルやスコアの内訳は含みません。

カテゴリ意味
automationスクリプト化されたブラウザやヘッドレスブラウザなど、自動化ツールの兆候。
networkプロキシ、データセンター、匿名化ネットワーク、ブロック済みアドレスなど、ネットワークがリスクありまたは不整合に見える。
abnormal_requestsリクエストが多すぎる、失敗の繰り返し、自動化トラフィックの履歴など、通常と異なるリクエストパターン。
deviceデバイスまたはその環境を信頼できない、または認識できない。
behavior操作がまったくない、再利用されたリンクなど、アクセスが人間らしい振る舞いをしていない。
other独自ルールやフォールバック判定を含む、その他の理由。

このリストはレポーティング用の説明として扱い、ルール構築用のシグナルとしては使わないで ください。代わりに is_bot、action、score で分岐します。今後カテゴリが追加される 可能性があります。

サーバーサイド検証 ​

ページが受け取るものはすべて訪問者が改ざんできます。コンテンツをゲートする場合(実在の人間 だけがページ、API レスポンス、ダウンロードを見られるようにする場合)、ブラウザ内の is_bot フラグを信用しないでください。verdict_token を自社サーバーに送り、そこで検証します。

  1. onVerdict で verdict.verdict_token をバックエンドに送ります(例:ヘッダーや Cookie で)。
  2. バックエンドがトークンと訪問者の IP アドレスを付けて POST /v1/bot/verdict/verify を呼び出します。
  3. レスポンスが valid: true で、判定が許容できる場合(例:verdict.is_bot が false)にのみコンテンツを提供します。

トークンはあなたのアプリ、この判定、訪問者のネットワークに紐づき、短時間(デフォルト 10 分)で 失効します。デフォルトではトークンは何度でも検証できるため、1 つのトークンで 1 回の訪問中の 複数ページビューをカバーできます。フォーム送信など、トークンを 1 回だけ使わせたい場合は consume: true を渡してください。

訪問者がその後エスカレーションのチャレンジを通過しても、トークンは元の判定を示したままです。 escalate_result の captcha pass token も、captcha のサーバーサイド API で検証してください。

level と score ​

level は score を帯に分けただけのもので、利便性のために提供されています。

levelこういうときに使う
lowクリーンなトラフィックとして扱います。
medium境界線上——記録は問題なし、高価値ファネルからの除外を検討します。
high強く疑わしい——フラグを立てて除外します。
criticalほぼ確実に無効——フラグ/除外し、可能ならエスカレーションします。

パイプラインに合うフィールドを選ぶ

  • シンプルな yes/no ゲート → is_bot で分岐。
  • 推奨ベース → action で分岐。
  • 独自のしきい値 → score(またはバケットなら level)で分岐。

degraded 判定の扱い ​

degraded が true のとき、判定は完全には算出されていません。フォールバックは意図的に 保守的(is_bot: false、action: record_only)なので、実在のユーザーがブロックされることは 決してありません。レポーティングでは、これらを確定クリーンなトラフィックとして数えるのではなく、 不明 として扱ってください。

次のステップ ​

  • Web SDK — ページ上で判定を受け取る
  • Data API — サーバーサイドで判定と統計を取得する

MIT-licensed examples · CaptchaLa is operated independently