「JSチャレンジ」と「CAPTCHAチャレンジ」の違いについてわかりやすく説明します。また実機検証の例をもつきました。
JSチャレンジとCAPTCHAチャレンジの違い
項目 | JSチャレンジ | CAPTCHAチャレンジ |
---|---|---|
目的 | クライアントのブラウザが実正規のブラウザかどうかを確認 | ユーザーが人間(ヒト)か自動化されたボットかを判定 |
仕組み | ブラウザにJavaScriptコードを送信し、その実行を検証 | ユーザーに画像認証やテキスト入力を求めるUIを出す |
対象者 | 自動化ボットや攻撃ツールを検出 | 実際のWebユーザー(人間)を識別 |
動作の流れ | JavaScript実行可能チェック → 正常ならアクセス許可 | CAPTCHA画像やクイズに回答させて判定 |
ユーザビリティ | 影響は少なく、ほとんど気付かない場合も多い | ユーザーの手間や時間を要し、負担がかかることもある |
例 | JavaScriptの実行を誘導し、その確認結果に基づき制御 | picture CAPTCHA、reCAPTCHA v2/v3など |
具体的な違いのポイント
-
JSチャレンジは、ブラウザ内部でJavaScriptを実行させて、その結果をもとにアクセスを制御します。
例として、「ブラウザがJavaScriptをサポートしているか」「特定のJavaScriptの動作が正常に行われるか」を確認します。
これにより、単純なボットや自動化スクリプトを排除できます。 -
CAPTCHAチャレンジは、ユーザーに対して画像や文字の認証を行わせるもので、「ユーザーが人間かどうか」を最終的に判定します。
ユーザビリティ的には負担がありますが、最も確実に「人間判定」を行える方法です。
実機検証:
以下のように自動確認していますね。すぐページのほうにたどり着きました。
-
HIPチャレンジのカスタムルールを設定して検証しました。(なんで名前はCAPTCHAチャレンジではなく、HIPチャレンジなのか謎ですが、一応HIPチャレンジで合っています).以下のように「自分はBotではないよ」と手動で確認する必要となります。
補足:実機検証では、チャレンジにPASSした後、マネージドルールは適用されることが確認できました。
まとめ
-
JSチャレンジは、「ブラウザがJavaScriptを正しく動作させるかどうか」を確認する軽めの検証です。
ユーザに追加負担をかけずに自動化ボットを排除できます。 -
CAPTCHAチャレンジは、「人間かロボットか」を厳密に判定するための検証で、ユーザには認証作業を求めます。