CAPTCHA は、すべての訪問者に人間であることの証明を求めます。ほとんどは人間なので、コストの大半はあなたが迎えたい人たちにかかります。サインアップでのパズル、ログインでのチェックボックス、スマートフォンで失敗したときのやり直し。その一方で、解読サービスは 1 セント未満でパズルを解いてしまいます。reCAPTCHA、Turnstile、hCaptcha の代替を探しているなら、代わりに何が欲しいのかを知っておくと役立ちます。
おそらく求めているもの
- 人が解くものは何もない。チェックはバックグラウンドで動き、ブラウザが自分について示す情報と、その使われ方から判断します。
- サーバーが行動に移せる答え。合否だけでなく、どれくらい確かか、そしてなぜか。クラス、スコア、その背後にある証拠の種類。
- その後の対応を自分で決められること。拒否する、速度を落とす、2 要素目を求める、無料クレジットを保留する。アクションごとに自分のコードで決めます。
- 新たな単一障害点にならないこと。チェックが遅くても止まっていても、フォームは動き続けます。
見えないチェックの仕組み
ページに置いた小さなスクリプトが、人には見えないシグナルを読み取ります。ブラウザが自動化で操作されているか、その構成要素が互いに矛盾していないか、ページがどんな種類の入力を受け取ったか。そして署名付きのトークンを Cookie に残します。サインアップ、ログイン、チェックアウトの前に、サーバーはそのトークンをリクエストの IP と User-Agent と一緒に送り、あなたが選んだ timeout の範囲内で判定を受け取ります。これが Bot Protection の形です。human_high、human、unknown、bot、bot_high のいずれかと、取るべきアクションが返ります。
合否ではなく判定
合否は中間のケースを隠してしまいますが、重要なのはまさにその中間です。初回訪問の多くは、どちらの方向にも証拠がほとんどありません。良いチェックは推測せずに unknown と答えて通します。自動化の強い証拠があれば bot_high で、拒否します。その間の bot では、より穏やかな対応を選べます。メールアドレスが確認されるまでトライアルのクレジットを保留する、2 要素目を求める、その訪問者にだけチャレンジを表示する、などです。
CAPTCHA がまだ正解になる場面
チャレンジにも出番はあります。全員にではなく、bot と判定された一部の訪問者への対応として表示する場合です。Bot Protection は独自のチャレンジページに誘導できますし、すでに使っている CAPTCHA を表示してもかまいません。また、1 つのフォームで無料のウィジェットと「はい/いいえ」だけが欲しいなら、無料の CAPTCHA で十分かもしれません。それがどんな場合かは、下の比較に書いてあります。
出典つきの比較
各比較には、ベンダー自身のページに書かれていることだけを載せ、相手のツールのほうが適している場合も明記しています。Cloudflare Turnstile、Google reCAPTCHA、hCaptcha、そしてすべての比較の一覧をご覧ください。