CAPTCHAによるトラックバックスパム対策

Posted by
ぴろり
Posted at
2006/06/21 16:59
Trackbacks
関連記事 (6)
Comments
コメント (4)
Post Comment
コメントできます
Category
プラグイン カテゴリ

 以前の記事で、コメントスパム避けのためにコメント投稿欄 CAPTCHA テストを導入する方法を紹介しました。今回、これをトラックバックスパム避けにも利用するためのプラグインを紹介します。スパム行為のほとんどが自動化されたロボットによるものと思われますから、CAPTCHA テストの効果にはかなり期待できそうです。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

背景

 MovableType のスパムトラックバック対策として、全角文字を含まないものや、記事への言及のないトラックバックを弾くなどの様々な方法が紹介されています。スパム行為の多くはロボットプログラムによって自動化されていると考えられますから、これら別のアプローチとして、ロボットプログラムがスパム送信することを難しく(≠不可能)できれば良いとも言えます。
 例えば、下のようなランダムな数字列を含む崩れた画像を表示して、その数字を人間に解読・入力させるようにしてやれば、ロボットプログラムによるスパム行為をほぼ確実に防ぐことができます。

 以前に、当サイトでコメントスパムを防ぐ目的で紹介したTiny Gimpy を利用して、トラックバックスパムも防ごうというものです。

ロボットプログラムに CAPTCHA を突破させることを専門にする学術研究分野があったりします。そのため、CAPTCHA を使えば完全にロボットを防げるとは言い切れませんが、スパム業者を相手にする程度でしたら十分な効果が期待できます。

ダウンロード

 Tiny Gimpy と mt-captcha-tb プラグインをダウンロードできます。

Tiny Gimpy

ver.1.00, '05/06/01, 0 bytes, Perl
  • 初版公開
  • 別途、GD ライブラリが必要です
mt-captcha-tb  new

ver.0.10, '06/06/21, 0 bytes, MovableType プラグイン
  • 初版公開
  • MovableType 3.151ja で動作確認

 このプログラムは GPL ライセンス(GNU General Public License;GNU 一般公衆利用許諾契約書 原文(英語)) の条件の下で自由に配布・使用することができます。

最新版のダウンロードやバグレポートはCAPTCHA の trac レポジトリでも行っています。

導入方法

Step.1〜2. TinyGimpy の導入

 CAPTCHA によるコメントスパム対策を参考にして、"Step 2. 設定ファイルの作成"までの作業を済ませておいてください。

Step 3. mt-captcha-tb プラグインの導入

 プラグインファイル(mt-captcha-tb.pl) をエディタで開き、以下の行を tgimpy.cgi を設置したパスに修正します。

require '/home/magicvox/www/www/cgi-bin/tgimpy/tgimpy.cgi';

 修正が終わったら MovableType のプラグインパス(plugins)にコピーします。管理画面のプラグイン一覧に、MT-CAPTCHA-TB が表示されていることを確認してください。

Step 4. テンプレートファイルの修正

 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>

いろいろ

  • MT 標準のパスフレーズ機能を上書きします
  • トラックバック URL に正しい CAPTCHA コードが入力されていない ping は失敗します
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  



関連記事/トラックバック (全 6 件中、最新 5 件まで表示しています)

Open MagicVox.net のスクリーンショット
タイトル
MovableTypeで簡易的なCAPTCHAを利用してトラックバックスパムを防ぐ方法
Trackbacked at
2008/04/19 09:44
from
Open MagicVox.net
概要
 トラックバックスパムを防ぐために,このブログではトラックバック URL に画像による CAPTCHA を設置しています。しかし,ここまで厳重(?)では...

サラリーマン白書 のスクリーンショット
タイトル
Movable Typeのスパム対策(トラックバック編)
Trackbacked at
2007/04/24 08:22
from
サラリーマン白書
概要
2回に渡ってコメントスパム対策をご紹介した訳ですが、今回は予告どおりトラックバック編をお届けしたいと思います・・・といっても、やっていることはコメント編と...

何にもないぶろぐ のスクリーンショット
タイトル
スパムトラックバック対策
Trackbacked at
2007/04/20 23:03
from
何にもないぶろぐ
概要
画像表示処理のタイプ導入編です。

どうでもいいこと のスクリーンショット
タイトル
さらにトラックバックスパム対策しちゃいました
Trackbacked at
2007/03/01 01:38
from
どうでもいいこと
概要
あれこれとトラックバックスパム対策を施してはいるものの、それでもやって来てしまう...

Project MultiBurst のスクリーンショット
タイトル
「CAPTCHA」によるトラックバックスパム対策(最終手段)
Trackbacked at
2006/11/02 00:12
from
Project MultiBurst
概要
トラックバックスパムにさんざん悩まされてきましたが、とうとう最終手段に出ることにしました。 『「CAPTCHA」によるトラックバックスパム対策』を実施しました。...

この記事にトラックバックを送るには?

寄せられたコメント (全 4 件中、最新 5 件まで表示しています)

Posted by
何にもないぶろぐ設置人何にもないぶろぐ設置人
at
2007/04/21 23:52
ID
RvsEhWkw
お陰さまで自己解決しました! cfgファイル内暗号キーの文字列に問題があり、そこで読み込みを停止していたようです。
いやぁ、見つけるまで苦労しました。ちゃんと動くようになって大喜びです! 有り難く使わせていただきます。
 勝手に一人で騒ぎまして申し訳ございませんでした。(同じ穴にはまる人のお役に立てれば幸いです)
Posted by
何にもないぶろぐ設置人何にもないぶろぐ設置人
at
2007/04/21 12:26
ID
RvsEhWkw
初めまして。これは素晴らしいと思い、早速設置させていたこうとしているのですが…
・なぜかcfgファイルを反映してくれません。アドレスの絶対標記/相対標記/urlその他いろいろ、だいぶ頑張ったんですが今のところダメ…。
・そこで、cgiの中で直接設定を記述してみました。もちろんそれは思い通りに反映されるんですが、いざトラックバックを受けてみると、正規のトラックバックも跳ね返してしまいます。
というところで行き詰まっております。
やはりcfgファイルを認識させられないところに問題がある、ぐらいしか原因はないんでしょうね。。。
それとも、こちらの環境が良くないかな…
 幼稚なコメントで申し訳ございません。もう一息ってところみたいなんで、何とか頑張ってるんですが、今のところ万策尽き果てた(大げさ)感じです。
Posted by
ぴろりぴろり
at
2006/11/02 10:29
ID
i5l99Vxg
tgimpy.cgi の 25 行目を次のように変更してみてください。
これで改善しますでしょうか?
修正前:
&CGIMain () if ($ENV{'SCRIPT_NAME'} =~ m/$szMyName$/);
修正後:
&CGIMain () if (defined $ENV{'SCRIPT_NAME'} && $ENV{'SCRIPT_NAME'} =~ m/$szMyName$/);
よろしくお願いします。
Posted by
showBOOshowBOO
at
2006/10/19 19:35
ID
HNzpECi2
はじめまして、いつもここでの情報を活用させてもらっております。
このトラックバックスパム対策を設置させていただきました。
そこで質問があるのですが、
当方では時間指定の投稿を行ったところ、
Use of uninitialized value in pattern match (m//) at /home/cgiroot/tgimpy/tgimpy.cgi line 25.
というエラーが表示されました。
画像は表示されているのですが、どうも気持ち悪い状態です。
なにか原因が考えられますでしょうか?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。