Korzen

ブログ

サインアップとログインのための CAPTCHA の代替:パズルではなく判定を

reCAPTCHA、Turnstile、hCaptcha の代替をお探しですか。見えないチェックにできることとできないこと、理由つきの判定と合否の違い、そして CAPTCHA がまだ正解になる場面。

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、そしてすべての比較の一覧をご覧ください。