Dev Stories

日本語クイズはもう限界? 自作スパム対策プラグインを導入して確認できたこと

· 1 min read

「日本語クイズ」でスパムは減ったけれど…

知人のサイトでは、スパム対策として「日本語クイズ」を導入していました。
「日本の首都は?」「『2つ前の日本の元号』をひらがなで入力してください」といった、日本で生活をしている人なら比較的簡単に答えられるけれど、自動プログラムには突破できないだろう、というアレですね。
クイズに正解しないとエラーとなって送信できません。

彼曰く、「クイズを導入してから、意味不明な英語のスパムはもちろん、無差別に送られてくる機械的なスパムも激減した」とのこと。ここまでは大成功です。

しかし、彼には小さな悩みが残っていました。
「それでも、定期的に送られてくる『営業メール』が少々邪魔なんだよね…」

「〇〇のサービスをご提案します」「Web集客にお困りではありませんか?」といった、どこかの企業からのテンプレ営業メールです。
知人は「まあ、日本語のクイズをちゃんと解いて送ってきているわけだから、向こうの営業担当者が手作業でコツコツ入力してるんだろう。こればかりはシステムでは防げないよね」と半ば諦めていました。

バージョンが古くて最新プラグインが入らない!?

そこで私は、自作したスパム対策プラグインの話をしてみました。
行動分析や暗号計算など、見えない15層の判定でボットを弾く仕組みです。

「試しに入れてみる?」と提案し、さっそく彼のWordPress環境を見せてもらったのですが……ここで問題発生。

なんと、WordPressの管理を長らく業者任せ(あるいは放置)にしていたため、WordPress自体のバージョンやPHPのバージョンがかなり古かったのです。
「バージョンを上げるとサイトのデザインが崩れるかもしれないから、すぐにはアップデートできない…」という、現場でよくあるパターンのやつです。
PHPエラーも出たかもしれません。

Samurai Honeypotのシステム要件を満たせず、そのままではインストールできませんでした。

特別バージョンでの検証、そして驚きの結末

とはいえ、どうしても効果を試してみたかった私は(そうです。私試したかった)、少しコードを調整し、システム要件を下げた「古いWordPressでも動く特別バージョン」のSamurai Honeypotを急遽作成。彼のサイトにインストールしてもらいました。

そして導入後、数日間の経過観察を行った結果……
驚くべきことが起きました。

手作業だと思っていた「定期的な営業メール」が、ピタリと止んだのです。

プラグインでは、100%SPAMであると判定されるとメールは送信されません。微妙な判定の場合は「隔離ログ」に記録されます。
そこを確認すると、そこには弾かれた営業メールのデータが残っていました。
つまり、どういうことか。

知人が「営業マンが手作業でクイズを入力している」と思っていたあのメールは、人間によるものではありませんでした。
「日本語クイズのテキストを自動で読み取り、正しい答えを記入して営業メールをばら撒くプログラム(ボット)」の仕業だったのです。

しかも、かなり高度に人間のふりをするbotです。

最近のボットは「クイズ」を自動処理する

一昔前なら、「日本語のクイズ」を設置するだけで、海外スパムだけでなく、国内の単純な自動送信ツールも防ぐことができていました。
しかし現在、スパム送信ツールは自然言語処理の技術などを組み込んでいるようです。「ページ内のテキストを読んで簡単なクイズに答える」という処理は、botシステム側から見れば完全に自動化できる作業になっています。

Samurai Honeypotがこの営業メールを止められた理由は、フォームの入力内容(クイズの正解かどうか)を見ていないからです。
代わりに、「入力するスピード」や「マウスの動き」「ブラウザの裏側の挙動(ヘッドレスブラウザの痕跡)」といった物理的なデータを判定しています。クイズの答えが合っていても、人間には不可能な速度で入力されていたり、自動化ツールの兆候があればスパムとして処理します。

もしかしたら皆さんのサイトでも、「人間が手作業で送ってきているから仕方ない」と諦めている営業メールはありませんか?
実はそれは、すでにクイズや従来の対策を自動で突破するようプログラムされたボットかもしれません。一度、裏側の「振る舞い」をチェックする対策を試してみてはいかがでしょうか。

すべてのコラム