独立サイトのフォームスパム対策:reCAPTCHA/hCaptcha/ハニーポットの効果
一、まずこの損得を計算する:スパムを防ぐことと顧客を逃すことは同じ問題
フォームのスパム対策で最も陥りやすい極端な考え方は、スパムが増えたら認証を厳しくすればいい、というものです。確かにbotは減りますが、本物の問い合わせも一緒に減ります。海外のB2Bバイヤーはもともと長いフォームを好みません。送信前に信号機の画像を8枚選ばせたら、そのまま閉じて離脱する可能性が高いです。認証の強度と離脱率は比例し、ユーザーが操作を求められる認証が1回増えるごとにコンバージョン率は下がります。
ここでの直感に反する判断はこうです。多くの問い合わせフォームでは、認証によるコンバージョン損失のほうが、遮断できるスパムの損失より大きい可能性があります。B2Bサイトが月に100件の送信を受け取り、うち20件がスパムだとします。この20件を遮断するためにコンバージョン率を10%落とすと、本物の問い合わせを10件失うことになり、差し引きで損です。正しい考え方は層別です。まずコストゼロのハニーポットと無感覚スコアでほとんどのbotを防ぎ、疑わしいときだけ人による認証を求めます。全員に認証を課すのではありません。フォーム項目とコンバージョン率の関係はこちら問い合わせフォームの項目設計と転換率。
| プラン | ユーザーがすること | 遮断効果 | コンバージョンへの影響 |
|---|---|---|---|
| reCAPTCHA v2 チェックボックス | 「私はロボットではありません」にチェック | botの約90%を遮断 | 離脱率が3%から5%上昇 |
| reCAPTCHA v2 画像 | 指定された画像を選ぶ | 約95%を遮断 | 離脱率が5%から10%上昇 |
| reCAPTCHA v3 | 何もしなくていい | スコアに応じて低スコアを遮断 | ほぼ影響なし |
| hCaptcha | たまに画像を選ぶ | v2と同等 | プライバシーはより良く、影響は同程度 |
| ハニーポット | 何も知らない | 低レベルなbotを遮断 | 影響ゼロ |
二、4方式それぞれの仕組みと適した場面
ハニーポットの仕組みは最もシンプルで最もエレガントです。フォームに、人間には見えずボットだけが入力する隠しフィールドを仕込みます。ボットは既定で全ての input を埋めるため、このフィールドが入力されていれば即座にスパムと判定し、静かに破棄してメールも送りません。利点はユーザーが全く気づかないこと、欠点は「手当たり次第に全フィールドを埋める」低レベルなボットにしか効かず、ページ構造を読む高度なスクリプトには無力なことです。
reCAPTCHA v3 は Google の無感覚型ソリューションです。バックグラウンドでユーザーのマウス移動、滞在時間、閲覧履歴を記録し、アクセスごとに 0.0 から 1.0 のスコアを付けます。しきい値(例えば 0.5)を設定し、下回る送信は即座に拒否せず手動レビューキューに入れます。代償は、こうした疑わしい送信を確認する手間がかかること、そして Google にデータを送信するため欧州サイトでは同意対応が必要なことです。hCaptcha は v2 と似た考え方ですがプライバシーをより重視し、データが Google に集中しないため、GDPR 準拠が厳しく欧州からの訪問者が多いサイトに適しています。配信と信頼性の全体的な調査については、次をご覧ください問い合わせフォームの信頼性。
| 次元 | ハニーポット | reCAPTCHA v3 | hCaptcha |
|---|---|---|---|
| ユーザー体験 | 完全に無感覚 | 完全に無感覚 | たまに画像選択が必要 |
| ブロック強度 | 弱い、低レベルなボットのみ | 中、スコア頼み | 強い、人間による検証 |
| プライバシー準拠 | 外部データなし、最もクリーン | データを Google に送信、同意が必要 | Google よりプライバシーに配慮 |
| 維持コスト | ゼロ | 低スコアキューを定期的に確認 | 低 |
| 適した用途 | 基本の必須対策 | 世界からの訪問者が中心のサイト | 欧州からの訪問者が中心のサイト |
三、設定方法:三層防御の意思決定フレームワーク
一つだけ選ぶのではなく、三層を重ねるのが正解です。第一層は常にハニーポットで、コストも影響もゼロ、まず 60% 以上の低レベルなボットスキャンを防ぎます。第二層は無感覚スコアリング(v3 または hCaptcha の無感覚モード)で、各送信にスコアを付けます。第三層でようやく、低スコアや異常な送信に対して画像認証を表示するか、直接手動レビューに回します。これにより通常のユーザーは最後まで無感覚で、疑わしい行動だけが人間であることの証明を求められます。
しきい値の設定が鍵です。v3 を導入した直後は「ブロックしきい値」をかなり緩く設定し、実際にはブロックせず観察だけを行い、1〜2 週間走らせて通常ユーザーのスコア分布を見ます。実際のユーザーが概ね 0.6 以上なら、ブロックラインを 0.4 に設定し、それを下回るものだけをレビューに回します。シナリオ一:月に 200 件の送信があり、スパムが二割を占めるサイト。ハニーポットと v3 を導入したら、まず v3 を「記録のみでブロックしない」に設定し、一週間観察して実際のユーザーのスコアが全て 0.5 以上であることを確認してから、0.4 以下の送信を直接拒否せずスパムフォルダに移します。シナリオ二:欧州からの訪問者が半分を占めるサイト。Google のソリューションの代わりに hCaptcha を使い、「Google のサービスを利用しています」という同意ポップアップを一层省き、準拠体験がよりスムーズになります。異常アラートの設定方法については、次をご覧くださいサイト監視とアラート。
| 迷惑メール率 | 推奨設定 | 手動審査が必要か |
|---|---|---|
| 10%未満 | ハニーポットのみで、認証コードは不要 | 不要 |
| 10%から30% | ハニーポット + v3 無感覚スコアリング | 低スコアキューを週1回チェック |
| 30% から 50% | 画像認証を追加し、疑わしい時だけ発動 | 1日1回確認 |
| 50%超 | 標的型攻撃を受けていないか確認 | IPレート制限を追加 |
4. 落とし穴:よくある設定ミス4つ
1つ目の落とし穴は、v3を「入れれば万事OK」と捉え、しきい値を設定したらキューを見ないことです。v3は判定であってブロックではなく、低スコアはすり抜けます。レビューキューを見なければ、入れた意味がありません。2つ目は、しきい値を厳しくしすぎて正常なユーザーまで遮断してしまうことです。特にアジアやラテンアメリカのネットワーク環境では、同じIPを複数人で共有しており、スコアが系統的に低く出ます。一律の基準で切ると、本物の問い合わせを誤って弾いてしまいます。
3つ目の落とし穴は、モバイルとアクセシビリティを忘れることです。画像認証は手が不自由な方やスクリーンリーダーのユーザーに優しくなく、せっかく終えたアクセシビリティ改修と矛盾します。4つ目は、フォームだけを守って管理画面を守らないことです。ボットはwp-loginも直接スキャンしますが、それはまた別の話です。本当の判断基準は「純損失」を見ることです。認証を強化するたびに、2週間の本物の問い合わせ数が減っていないか比べます。5%以上減っていれば、締め付けすぎです。初回応答速度とコンバージョンの関係は、次をご覧ください。問い合わせ初回返信のSLAとコンバージョン率。
| よくある誤り | 結果 | 正しい対処 |
|---|---|---|
| v3を入れてもレビューキューを見ない | 低スコアの迷惑メールが受信トレイに届く | 週1回の定期的なチェック |
| しきい値が厳しすぎる | 共有IPの実ユーザーを誤って弾く | まず緩めにして、分布を観察 |
| ファーストビューで画像認証を強制 | 離脱率が明らかに上昇 | 疑わしい送信の時だけ発動 |
| 迷惑メール数だけ見てコンバージョンを見ない | 対策するほど誰もフォームを送らなくなる | 調整のたびに本物の問い合わせを比較 |
| アクセシビリティを無視 | スクリーンリーダーのユーザーが送信できない | ストレスのない方式を優先 |
FAQ よくある質問
reCAPTCHA v2とv3、結局どちらを選ぶ?
ハニーポットとは何か、本当に使えるのか?
hCaptchaはreCAPTCHAよりどこが優れている?
reCAPTCHA v3のスコアしきい値はいくつに設定すべきですか?
当サイトはスパムが少ないですが、それでも認証コードを入れる必要がありますか?
スパム対策で実際の顧客を誤って傷つけることはありますか?どう判断しますか?
最後に
フォームのスパム対策の目標は「スパムゼロ」ではなく、「実顧客を追い出さずに、スパムを営業が処理できる範囲に抑えること」です。スパムゼロのために最強の認証コードを導入するのは、実の問い合わせと引き換えに受信箱をきれいにすることであり、この計算は多くの場合損になります。階層的な考え方を覚えておきましょう。ハニーポットを土台にし、無感覚スコアリングで判断し、疑わしい行動にだけ認証を強化するのです。
導入は3ステップ。まずハニーポットを設置し、低レベルなボットをゼロコストで遮断します。次にreCAPTCHA v3かhCaptchaのスコア評価を追加し、最初の2週間はブロックせず観察だけを行います。最後に実際のユーザーのスコア分布に基づいてしきい値を決め、低スコアの送信は人的確認に回します。2週間ごとに、本当の問い合わせが誤って弾かれていないかを比較しましょう。フォームは問い合わせの最後の一歩です。ユーザーに気づかれないレベルまで迷惑投稿対策を徹底して、初めて完成と言えます。
覚えておきたい一言。最高の迷惑投稿対策は、ユーザーがその存在にすら気づかないことです。全員を泥棒扱いすれば、本物のお客様から先に門前払いされてしまいます。
