キャプチャを使わずスパムコメントをブロック

Spam block imageブログにコメントを残そうとするとき、人間だと証明するために、読みにくい文字や数字のキャプチャを解読した経験は誰もがあると思います。下のリンクは、読むキャプチャではなく、音声のキャプチャです。各ボタンを押して、数列を聞き取ってみてください。


MP3 | OGG


MP3 | OGG


MP3 | OGG

難しいでしょう? このサンプルは、編集もダウンサンプリングもしていない実際に使用されているものです。

大部分の人が必要としてるようですが、私もWordPressブログ上でスパムをブロックする必要がありました。でも私はキャプチャは使用しないことにしました。スパムは、読者にとって問題ではありませんが、キャプチャを使用することで、読者に煩わしい思いをさせてしまいます。目の良い人でも読むのが大変なのに、視力が弱い人や目の見えない人にとっては、もっと厄介です (将来年をとって視力が弱くなるケースも含みます)。明らかに、別のもっと良い方法を考える必要があります。

質問回答式キャプチャ

「2+7=」とか「落葉の季節は?」といったものが質問回答式キャプチャです。このようなテキストの場合、スクリーンリーダーと呼ばれるソフトを使うことによって、目の見えない人でも音で聞くことができます。そういう意味では便利ですが、質問が読者の理解できる言語でなければならない点は不便です。私のブログは、英語と日本語ですので、不便です。複数の答が考えられる場合もあります。たとえば、落葉の季節は (英語なら) autumnともfallとも答えることができます。

CSSで隠すフォーム・フィールド

これは、なにも書き込みをしないフィールドを作る方法で、そこにはleave emptyとメッセージを入れたりします。スパムボットはどのフィールドにも自動的に書き込みを行いますが、人間は書き込まないことを利用したものです。CSSは、人間からフィールドが見えなくするために利用できますが、スクリーンリーダー利用者やユーザ・スタイルを適用した人 (または全く適用しない場合) には「見えて」います。この方法もしばらく試しましたが、実際にはあまり効果がありませんでした。スパムボットは、本当に賢いですね。

サードパーティのスパム・ブロッキング・サービス

Akismetが一番良く利用されていますが、他のサービスもあります。それは、リモートサーバにコメントを送り、そこでスパムか否かを分析、分類するものです。この方法は効果がありそうですが、登録が必要だったり、スパムをブロックする目的によっては有料だったと思います。また、プライベートなコメントを送る環境には向きません。

IPアドレス・ブラックリスト

自前でも、他人から入手したものでも、リストを利用して、スパムを送ることが明らかなIPアドレスからのスパムコメントをブロックするのは簡単です。でも私はこの方法が好きではありません。その理由は2つあります。

  • 例えばVPN接続などの場合、1つのIPアドレスを複数のユーザで共有していることもあるし、スパム発信者が、こっそりと接続したコンピュータからコメントを送ることもできます。この場合、無実の人を罰することになってしまいます。そんなことはしたくありません。
  • 私のブログのスパムコメントを見る限り、同一のIPアドレスから送られたものは一つとしてありません。だからこの方法で効果があるかどうか疑わしいのです。

答えは?

結果として、私はあるスパムボットの研究に出会い、ネッド・バチェルダー氏 (おそらく他数名と共に) による素晴らしいスパムのブロック方法にたどり着きました。スパムコメントのほとんどは、リモートサーバから迅速に送られるので、コメントのフォームに独自のトークン信号を加え、コメントが投稿された時にそのトークン信号があるかどうかをチェックすることが可能です。試したところ、約2/3のスパムはブロックできました。まだ改良の余地はありますが、最初の試みとしてはまずまずでしょう。何度も手直しや検証をした結果、コメントをさらに分析をすることで、残りのスパムもほとんど捉えられることが分かりました。たとえば、ページの読み込みと投稿の時間のズレや、コメント内のリンク比率、過去のコメントと内容が似ているコメントなどを分析するのです。ついに満足出来ました。私のブログの直近100個のスパムコメントのうち、98個はフィルターにて検出され、ブロックされました。完璧ではないし、時間とともに効果が薄れてしまうかもしれませんが、ほぼ満足でいい妥協点だと思います。なにより読者が喜んでくれるのが一番です。

私は、これをWordPress用スパム・ブロッキング・ブラグインとして組み立てました。そしてソースコードはここで見ることができます。ユーザからは見えず、サイト・オーナーにとってはメインテナンス・フリーです。お気に入りいただいた人は、ぜひWordPressのディレクトリに良いレビューを書いていただけるととてもうれしく思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>