以前の記事で、コメントスパム避けのためにコメント投稿欄 CAPTCHA テストを導入する方法を紹介しました。今回、これをトラックバックスパム避けにも利用するためのプラグインを紹介します。スパム行為のほとんどが自動化されたロボットによるものと思われますから、CAPTCHA テストの効果にはかなり期待できそうです。
MovableType のスパムトラックバック対策として、全角文字を含まないものや、記事への言及のないトラックバックを弾くなどの様々な方法が紹介されています。スパム行為の多くはロボットプログラムによって自動化されていると考えられますから、これら別のアプローチとして、ロボットプログラムがスパム送信することを難しく(≠不可能)できれば良いとも言えます。
例えば、下のようなランダムな数字列を含む崩れた画像を表示して、その数字を人間に解読・入力させるようにしてやれば、ロボットプログラムによるスパム行為をほぼ確実に防ぐことができます。
以前に、当サイトでコメントスパムを防ぐ目的で紹介したTiny Gimpy を利用して、トラックバックスパムも防ごうというものです。
ロボットプログラムに CAPTCHA を突破させることを専門にする学術研究分野があったりします。そのため、CAPTCHA を使えば完全にロボットを防げるとは言い切れませんが、スパム業者を相手にする程度でしたら十分な効果が期待できます。
Tiny Gimpy と mt-captcha-tb プラグインをダウンロードできます。
Tiny Gimpy
ver.1.00, '05/06/01, 0 bytes, Perl
|
mt-captcha-tb
ver.0.10, '06/06/21, 0 bytes, MovableType プラグイン
|
このプログラムは GPL ライセンス(GNU General Public License;GNU 一般公衆利用許諾契約書 原文(英語)) の条件の下で自由に配布・使用することができます。
master
) ... バグ修正や機能追加など開発途中のバージョンです。開発中の新機能などをいち早く利用できますが、新しいバグが生まれていたり、テストが不十分な場合があります。CAPTCHA によるコメントスパム対策を参考にして、"Step 2. 設定ファイルの作成"までの作業を済ませておいてください。
プラグインファイル(mt-captcha-tb.pl
) をエディタで開き、以下の行を tgimpy.cgi を設置したパスに修正します。
require '/home/magicvox/www/www/cgi-bin/tgimpy/tgimpy.cgi';
修正が終わったら MovableType のプラグインパス(plugins
)にコピーします。管理画面のプラグイン一覧に、MT-CAPTCHA-TB が表示されていることを確認してください。
CAPTCHA テスト付きのトラックバック URL は、トラックバック URL の末尾に TinyGimpy の設定ファイル名と、CAPTCHA コードが付与された以下のような URL になります。URL 末尾に画像に表示された数字を入力してもらう手間が増えますが、ロボットプログラムにはこの作業が非常に難しいため、スパム避けとしての効果が期待できるのです。
http://www.magicvox.net/cgi-bin/mt/mt-tb.cgi/107/yourblog/123456789
このようなトラックバック URL を案内できるように、エントリアーカイブテンプレートなどのトラックバック URL を告知している部分を修正します。具体的には以下のサンプルのように、CAPTCHA テストのための画像を併せて表示するようにします。
この記事のトラックバックアドレス:<br /> <a href="<$MTEntryTrackbackLink$>/yourblog/XXXXXX"> <$MTEntryTrackbackLink$>/yourblog/ <img src="/cgi-bin/tgimpy/tgimpy.cgi?cfg=yourblog&key=<$MTEntryID$>"></a> <p> トラックバックスパム避けのため、トラックバック URL 末尾の XXXXXX 部分を上記画像の数字列に書き換えてからご利用ください。 </p>
寄せられたコメント (全 4 件中、最新 5 件まで表示しています)
いやぁ、見つけるまで苦労しました。ちゃんと動くようになって大喜びです! 有り難く使わせていただきます。
勝手に一人で騒ぎまして申し訳ございませんでした。(同じ穴にはまる人のお役に立てれば幸いです)
・なぜかcfgファイルを反映してくれません。アドレスの絶対標記/相対標記/urlその他いろいろ、だいぶ頑張ったんですが今のところダメ…。
・そこで、cgiの中で直接設定を記述してみました。もちろんそれは思い通りに反映されるんですが、いざトラックバックを受けてみると、正規のトラックバックも跳ね返してしまいます。
というところで行き詰まっております。
やはりcfgファイルを認識させられないところに問題がある、ぐらいしか原因はないんでしょうね。。。
それとも、こちらの環境が良くないかな…
幼稚なコメントで申し訳ございません。もう一息ってところみたいなんで、何とか頑張ってるんですが、今のところ万策尽き果てた(大げさ)感じです。
これで改善しますでしょうか?
修正前:
&CGIMain () if ($ENV{'SCRIPT_NAME'} =~ m/$szMyName$/);
修正後:
&CGIMain () if (defined $ENV{'SCRIPT_NAME'} && $ENV{'SCRIPT_NAME'} =~ m/$szMyName$/);
よろしくお願いします。
このトラックバックスパム対策を設置させていただきました。
そこで質問があるのですが、
当方では時間指定の投稿を行ったところ、
Use of uninitialized value in pattern match (m//) at /home/cgiroot/tgimpy/tgimpy.cgi line 25.
というエラーが表示されました。
画像は表示されているのですが、どうも気持ち悪い状態です。
なにか原因が考えられますでしょうか?