印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType Tiny Gimpy で迷惑コメント対策

CAPTCHA™ による画像認証をつけて迷惑コメント対策をすることにした。

■ ■ ■

はじめに

これまで,このブログにコメント投稿をする際は,1度プレビューをしてからにしてもらうということで迷惑コメントを排除してきた (nlog(n): プレビューを強制する迷惑コメント対策)。しかし,このやり方に対応するロボットが出てきて,迷惑コメントが1日に100件以上も入るようになってしまった。

そこで,CAPTCHA™ を使って迷惑コメント対策をすることにした。Movable Type に導入するのにはいくつかの方法が提案されている。

このブログは Movable Type 2.661 である。Movable Type 3.2 用のプラグインを手直しすれば使えそうだが,テストするのがしんどいので,Open MagicVox.net 提案の方法を使うことにした。仕組みとしては The CAPTCHA Project. Gimpy. を使っているとのこと。Gimpy は何故か現在リンク切れ。

動作環境

動作環境は Vine Linux 4.2, Movable Type 2.661, CGI 3.65, GD 2.0.35, Digest::MD5 2.53。

インストールと設定

ダウンロードとインストール

CAPTCHA によるコメントスパム対策 - Open MagicVox.net から Tiny Gimpy の CGI をダウンロードして設置。設定ファイルは tgimpy.cfg という名前にして,tgimpy.cgi と同じディレクトリに置いた。

/cgi-bin/tgimpy.cgi
/cgi-bin/tgimpy.cfg

必要な Perl モジュール CGI, GD, Digest::MD5 をインストール。Vine Linux には,GD のコンパイル済みパッケージが用意されている。

# apt-get install perl-GD
# cpan -i CGI Digest::MD5

動作確認

Tiny Gimpy にブラウザでアクセスしてみると,

http://nlogn.ath.cx/cgi-bin/tgimpy.cgi?cfg=tgimpy&key=1

画像は出るが,画像の中にノイズが入らない。どうしてだろう?

Movable Type の修正

個別記事とコメントプレビューの2つのテンプレートに以下を追加。

<input type="hidden" name="cfg" value="tgimpy" />

<label>Confirmation Code (<span class="accesskey">D</span>):</label><br />
<input type="text" name="ans" accesskey="D" tabindex="<$MTEnumVar name="tabindex"$>" />
<img src="/cgi-bin/tgimpy.cgi?cfg=tgimpy&key=<$MTEntryID$>" /> (必須)

MTEnumVar というのは,連番を振ってくれるプラグイン Ogawa::Buzz: MTEnumVar Plugin の変数タグ。

Comment.pm の修正

(MT のインストールパス)/lib/MT/App/Comment.pm を修正する。これもそのまま。

sub post {
    my $app = shift;
    my $q = $app->{query};

    return do_preview($app, $q, @_) if $app->request_method() ne 'POST';

    ;### ここから追加
    require '/home/http/html/cgi-bin/tgimpy/tgimpy.cgi';
    my $cfg = $q->param ('cfg');
    my $ans = $q->param ('ans');
    return $app->handle_error ("認証キーを入力してください")
            if (! &TGimpy'CheckAnswer ($cfg, $q->param('entry_id'), $ans));
    ;### ここまで追加

まとめ

これはスルドク効果があった。しばらくは迷惑コメントに悩まされずに済みそうだ。ただし,普通のコメントが入らないのは,この対策のせいではない (泣)。

Posted by n at 2014-04-14 03:51 | Edit | Comments (1) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

テストコメント投稿

Posted by: n at April 14, 2014 04:08
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?