--- title: 不正対策 — Web SDK --- # 不正対策 Web SDK 不正対策 Web SDK は **あなたのページ** 上で動作します——ランディングページ、登録やログインの 画面、あるいは保護対象の任意のリソースです。現在のアクセスについて判定を要求し、それを あなたのコードに返すので、そのトラフィックをどう扱うか——記録する、フラグを立てる、 あるいは訪問者にもう 1 つの追加検証を求める——を判断できます。 ## クイックスタート ```html ``` `BotSignal.init()` は `Promise` も返すので、`onVerdict` を使う代わりに `await` することもできます——どちらも同じ判定オブジェクトを受け取ります。 ```js const verdict = await BotSignal.init({ appKey: 'YOUR_APP_KEY' }); ``` ## オプション | オプション | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | `appKey` | string | — | 不正対策アプリケーションキー(必須)。 | | `domain` | string | サービス既定値 | 判定サービスのエンドポイント。専用ドメインを付与された場合を除き、未設定のままにしてください。 | | `escalate` | boolean | `false` | アクセスが高リスクに見える場合に、不正対策が訪問者へ **もう 1 つの追加検証** を求めることを許可します。[エスカレーション](#escalation) を参照してください。 | | `collectWindowMs` | number | `1200` | SDK が判定を要求する前にアクセスを観察する時間(ms)。観察時間を長くするほど、わずかな遅延と引き換えに、より確度の高い判定が得られます。 | | `onVerdict` | `(v) => void` | — | 最終的な判定とともに 1 度だけ呼ばれます。主要な連携ポイントです。 | | `onError` | `(err) => void` | — | 何か問題が起きたときに呼ばれます。SDK があなたのページに例外を投げることはありません。 | | `onEscalate` | `(displayType) => void` | — | 追加検証が表示されたときに呼ばれます(`escalate: true` のときのみ)。 | | `onEscalateDone` | `(passed) => void` | — | 追加検証が完了した後に呼ばれます。訪問者がクリアした場合 `passed` は `true` です。 | ::: tip トラフィックソースのシナリオ 第三者があなたに訪問者を届け、双方がクリック単位の結論で突き合わせる必要がある場合、SDK は ページの URL からクリックトークンを読み取ることもできます。これは有料トラフィックのフローに 固有のものです——[広告不正](./scenarios/ad-fraud) ガイドを参照してください。 ::: ## 判定の使い方 `onVerdict` は `BotVerdict` オブジェクトを受け取ります。最もよく使う 2 つのフィールドは 次のとおりです。 - **`verdict.is_bot`** — アクセスが自動化/無効と判定された場合に `true` です。 - **`verdict.action`** — 推奨する対処:`record_only`、`challenge`、または `flag`。 ```js BotSignal.init({ appKey: 'YOUR_APP_KEY', onVerdict: function (verdict) { switch (verdict.action) { case 'record_only': // normal-looking traffic — proceed, just log the verdict break; case 'flag': // suspicious — keep serving the page but mark this visit as low quality markLowQuality(verdict); break; case 'challenge': // high risk — handled by escalation if enabled (see below) break; } }, }); ``` すべてのフィールド一覧と推奨される処理は、[Verdict リファレンス](./verdict-reference) を 参照してください。 ## エスカレーション {#escalation} アクセスが高リスクに見える場合、不正対策は、訪問者を実在のユーザーとして扱う前に、 **もう 1 つの追加検証** の完了を求めることができます。これはオプトインです。 `escalate: true` で有効化します。 ```js BotSignal.init({ appKey: 'YOUR_APP_KEY', escalate: true, onEscalate: function (displayType) { // an extra verification is being shown to the visitor }, onEscalateDone: function (passed) { if (passed) { // visitor cleared the extra check — treat as human } else { // not cleared — keep the original verdict's recommendation } }, onVerdict: function (verdict) { // if the visitor cleared escalation, verdict.is_bot is updated to false }, }); ``` 注意点: - エスカレーションは、判定の `action` が `challenge` のときにのみ発生します。それ以外の すべてのアクセスでは何も表示されず、訪問者の体験はそのまま保たれます。 - 訪問者が追加検証をクリアすると、`onVerdict` に渡される判定はそれを反映します (人間として扱われます)。 - エスカレーションは **フェイルオープン** です。追加検証を読み込めない・表示できない場合、 SDK はあなたのページをブロックせず、元の判定を保持します。 ::: info 不正対策があなたの **代わりに** 決定を下すことはありません。`challenge` / `flag` の場合でも、 アクセスを進めるかどうかの主導権はあなたのコードにあります——SDK は判定を提示し、必要に応じて 追加検証を実行するだけです。 ::: ## 耐障害性 判定サービスに到達できない、または何らかのエラーが発生した場合、SDK はあなたのページを 失敗させる代わりに **degraded**(劣化)判定(`degraded: true`)を返します。degraded 判定は 保守的(`is_bot: false`、`action: record_only`)なので、実在のユーザーをブロックすることは 決してありません。そうしたアクセスを特別に扱いたい場合は `verdict.degraded` を確認してください。 ## 次のステップ - [Verdict リファレンス](./verdict-reference) — すべてのフィールドと、その対処方法 - [Data API](./data-api) — サーバーサイドで判定を取得・突き合わせる