1日40件のスパムで、本物の問い合わせが埋もれた
ある予約フォームで、1日に40件ほどの自動送信スパムが届くようになったことがありました。
通知メールは全部届く。でも、その中に本物の予約が混ざっている。担当者は毎朝、40通のメールを目視で選別してから仕事を始めることになりました。「スパムが来る」だけなら我慢できても、「本物を見落とすかもしれない」状態は放置できません。
私はこれまで、reCAPTCHAや画像認証など、いろいろなスパム対策を試してきました。今は数十社のサイトでCloudflare Turnstileに切り替えています。この記事では、その理由と導入の流れ、実際にやってみて気づいたことを書きます。
フォームスパムの正体
フォームに来るスパムは、大きく2種類あります。
- ボットによる自動送信:プログラムがフォームのHTMLを読み取って、機械的に送信してくる。件数が多く、内容は英語の宣伝やリンクが中心
- 人力の送信:人が手で送ってくる営業メールや嫌がらせ。件数は少ないが、ボット対策をすり抜ける
対策で減らせるのは主に前者です。そして前者が全体の9割以上なので、ここを止めるだけで実務の負担はほぼ解消します。
これまでの対策と、それぞれの弱点
画像認証(歪んだ文字を読む方式)
ボットの読み取り精度が上がり、効果が薄くなりました。一方で人間には読みにくく、離脱の原因になります。
reCAPTCHA v2(「私はロボットではありません」)
効果はありますが、画像を選ぶ追加認証が出ると、スマホでは特に面倒です。フォームの送信率が下がった経験があります。
reCAPTCHA v3(スコア判定・表示なし)
ユーザーの操作は不要ですが、スコアの閾値調整が難しく、本物の問い合わせを弾いてしまうことがありました。また、ページ右下のバッジ表示や、サイト全体にスクリプトが読み込まれる点を気にするクライアントもいます。
ハニーポット(人間には見えない入力欄)
軽くて相性はよいのですが、単体では最近のボットに通用しないことが増えました。
Turnstileに切り替えた理由
Cloudflare Turnstileは、reCAPTCHAと同じ「ボット判定の仕組み」ですが、使ってみて違いを感じたのは次の点です。
- ユーザー操作がほぼない:ほとんどの場合、チェックマークが自動で付くだけで、画像選択などの追加認証が出ない
- 無料で使える:Cloudflareのアカウントがあれば、サイトのDNSをCloudflareに移さなくても使える
- 軽い:reCAPTCHAに比べてスクリプトが小さく、読み込みへの影響が少ない
- プライバシー面の説明がしやすい:Googleアカウントとの紐づけがないので、クライアントへの説明が楽
正直に言うと、「スパムが完全にゼロになる」わけではありません。ただ、冒頭の1日40件のケースでは、導入後は数日に1件あるかないか、というレベルまで減りました。目視選別が不要になった時点で、実務的には解決です。
導入の流れ
1. Cloudflareでサイトキーとシークレットキーを発行する
CloudflareダッシュボードのTurnstileから、ウィジェットを追加します。ドメインを登録すると、サイトキー(HTMLに埋め込む)とシークレットキー(サーバー側で検証に使う)が発行されます。
複数のクライアントサイトを管理している場合は、キーをどのアカウントで発行するかを先に決めておくと後が楽です。私は制作会社側のアカウントで一括管理しています。クライアントごとにCloudflareアカウントを作ってもらうと、ログイン情報の管理が煩雑になるからです。
2. フォームプラグインに設定する
WordPressのフォームプラグインは、多くがTurnstileに対応しています。
- Contact Form 7:「Simple Cloudflare Turnstile」などの連携プラグインを入れて、キーを設定
- Snow Monkey Forms:設定画面にTurnstileの項目があるので、キーを入力
- 自作フォーム・MailformPro:HTMLにウィジェットを埋め込み、送信時にサーバー側でトークンを検証する処理を追加
3. 必ずテスト送信する
ここが一番大事です。設定後、スマホとPCの両方で実際に送信して、通知メールが届くことを確認します。Turnstileの検証に失敗すると、スパムだけでなく本物の送信も止まるので、「設定したから大丈夫」で終わらせないようにしています。
4. ハニーポットと併用する
Turnstile単体でもほぼ止まりますが、私はプラグイン側のハニーポット機能も一緒にオンにしています。片方がすり抜けても、もう片方で止まる構成です。
導入後に気づいたこと
- 古いブラウザでは稀に表示されないことがあり、クライアントから問い合わせが来たことがあります。チェックマークが表示されない場合はブラウザの更新を案内しています
- 管理画面の通知メールが減ったことで「フォームが壊れたのでは」と心配されたことがありました。導入時に「スパムが減るので通知も減ります」と一言伝えておくと安心されます
- 人力の営業メールは残ります。これは仕組みでは止められないので、問い合わせ種別の選択肢を設けて振り分けるなど、運用で対処しています
まとめ
- フォームスパムの大半はボットなので、ボット判定を入れるのが最も効果的
- reCAPTCHAはユーザーへの負担や閾値調整の難しさがあり、Turnstileに切り替えた
- 導入はキー発行・プラグイン設定・テスト送信の3ステップ
- ハニーポットと併用し、本物の送信が止まっていないことを必ず確認する
「スパムが来て困る」という相談は、Web制作の現場では定期的に発生します。対策の選択肢は変わり続けていますが、2026年時点では、無料で・軽くて・ユーザーに負担をかけないTurnstileが、私の中では第一候補です。
