Top / Movable Type / コメントスパム対策 完結編・・か?

Warning: include(http://zacky.web6.jp/blog/searchbar.php) [function.include]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/zacky/public/www/blog/phptemp/0094907743.php on line 130

Warning: include() [function.include]: Failed opening 'http://zacky.web6.jp/blog/searchbar.php' for inclusion (include_path='.:/usr/local/share/pear') in /home/zacky/public/www/blog/phptemp/0094907743.php on line 130

2008.03.19 Wed.

コメントスパム対策 完結編・・か?

さんざん悩まされてきたコメントスパム。。
サーバー移転後、SCodeを導入してからは、見事に0件!

しかしユーザビリティの点から見ると、セキュリティコードを入力する”ひと手間”が増えたことでイマイチです。
せっかくコメントをしていただいても、コードを入力し忘れたが為にスパムコメントとして処理されてしまうこともゼロではありません。

できればもっと手軽に、かつ本当のスパムコメントのみをフィルタリングできないものかと、以前一度失敗している「MT-Keystrokes」プラグインを利用できないかと、常々思っていました。

そんな折、下記のような素晴らしい記事を発見!!

再度「MT-Keystrokes」導入に挑戦してみることにしました。

これまでもいろいろと「MT-Keystrokes」については調べてみたんですが、コメント投稿→保留画面→コメントロスト(T_T)という、同じ症状の方の記事には何件かヒットするのですが、残念ながら解決には至りませんでした。
当ブログの該当記事にコメントいただいた方法も試してみたんですが、残念ながらこちらも失敗!
正直、「MT-Keystrokes」の導入は諦めていたんです。

こちらの記事を拝見したところ、このブログで使えない理由がやっとわかりました。
このブログはMovableType3.3系
導入した「MT-Keystrokes」はkeystrokes-0.1.5
参照先記事の表にあるように、MT3.3×+keystrokes-0.1.5の組み合わせでは問題で動作しないわけですね(^_^;;

「keystrokes.pl」内の下記の部分

$keystrokes = $q->param($FIELD_NAME) if $q->param($FIELD_NAME);
$eh->error("keystroke failed: " . $obj->email) if $LOG && $keystrokes < 1;
$eh->error("keystroke id: " . $obj->blog_id);
return $keystrokes > 0
ここの太字部分が悪さしているとか。

で、上記太字部分をコメントアウトで無効にすることで正常に動作するようになり、下記の記述に変更することで、弾いたスパムのログを確認できるようになるそうです。
■変更前
sub _hdlr_comment_filter {
my ($eh, $app, $obj) = @_;
if (!$NOUSE{$obj->blog_id}) {
my $q = $app->{query};
my $keystrokes = 0;
$keystrokes = $q->param($FIELD_NAME) if $q->param($FIELD_NAME);
$eh->error("keystroke failed: " . $obj->email) if $LOG && $keystrokes < 1;
$eh->error("keystroke id: " . $obj->blog_id);

return $keystrokes > 0
}
else { return 1 }
}

■変更後
sub _hdlr_comment_filter {
my ($eh, $app, $obj) = @_;
if (!$NOUSE{$obj->blog_id}) {
my $q = $app->{query};
my $keystrokes = 0;
$keystrokes = $q->param($FIELD_NAME) if $q->param($FIELD_NAME);
$app->log({message => $app->translate("Comment save failed with [_1]",
"keystroke failed"),
blog_id => $obj->blog_id,
class => 'comment',
level => MT::Log::ERROR()
}) if $LOG && $keystrokes < 1;

return $keystrokes > 0
}
else { return 1 }
}

クリックで拡大
SCodeを外し、「MT-Keystrokes」を有効にして再構築後、コメント投稿のテストをしてみたところ・・・

行方不明にならずに、ちゃんと投稿されました!!

というわけで、コメント投稿時のセキュリティコード入力は解除します。

あとは、しばらく様子を見て、スパムコメントの襲撃がなければOKですね。


長かったスパマーとの戦い(大袈裟か(笑))も、これにてようやく完結でしょうか。
「コメントスパム対策(再)」なんて記事を書くことにならないことを祈ります(笑)

Comments (3件)

#1 : Zacky。
2008/03/19 21:19:17
コメントのテスト
#2 : Debow さん
2008/03/21 20:04:30
どれどれ、試してみるか・・
ところで、記事の内容。。。。暗号文にしか見えません(^_^;)
#3 : Zacky。
2008/03/21 22:25:40
おっ!ちゃんと反映されてますね♪
自分以外の環境でもコメントロストしないんで大丈夫でしょう!

>ところで、記事の内容。。。。暗号文にしか見えません(^_^;)
つまりですね・・・僕もよくわからんです(爆)

Please post a comment







Options


(スタイル用のHTMLタグが使えます)
太字 イタリック アンダーライン 取り消し線 ハイパーリンク
  • ※ 書き込み処理に時間がかかる場合がありますが、何度もクリックしないようお願いします。。
  • ※ 稀にエラーになった場合でも、書込みは完了していることがあります。
  • Trackbacks (1件)

    記事URL:

    トラックバックURL:
  • ※ 記事内容に関係のないトラックバックは削除させていただくことがあります。ご了承ください。
  • ※ この記事に対する言及リンクのないトラックバックは、迷惑トラックバックとして公開されないことがあります。
  • うんせきブログ:MT-Keystrokes プラグイン MT-Keystrokes プラグイン
    コメントスパム問題。 SCode((↓コレ↓)を先日導入してからというもの、 コ...[詳しくはこちら]


    Warning: file(http://zacky.web6.jp/mt/plugins/PerlDynamic/mt-perl-dynamic.cgi?uri=%2Fblog%2Fcalendar.php&blog_id=1) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/zacky/public/www/blog/mt-dynamic.php on line 87
    ダイナミック・パブリッシングエラー Build Error

    再構築したファイルを保存するのに失敗しました。

    +Monthly Archives+


    Warning: file(http://zacky.web6.jp/mt/plugins/PerlDynamic/mt-perl-dynamic.cgi?uri=%2Fblog%2Fentry_list.php&blog_id=1) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/zacky/public/www/blog/mt-dynamic.php on line 87
    ダイナミック・パブリッシングエラー Build Error

    再構築したファイルを保存するのに失敗しました。

    +Categories+


    Warning: file(http://zacky.web6.jp/mt/plugins/PerlDynamic/mt-perl-dynamic.cgi?uri=%2Fblog%2Fcom_list.php&blog_id=1) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/zacky/public/www/blog/mt-dynamic.php on line 87
    ダイナミック・パブリッシングエラー Build Error

    再構築したファイルを保存するのに失敗しました。


    Warning: include(http://zacky.web6.jp/blog/tb_list.php) [function.include]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/zacky/public/www/blog/phptemp/0094907743.php on line 642

    Warning: include() [function.include]: Failed opening 'http://zacky.web6.jp/blog/tb_list.php' for inclusion (include_path='.:/usr/local/share/pear') in /home/zacky/public/www/blog/phptemp/0094907743.php on line 642

    Warning: include(http://zacky.web6.jp/blog/hottopic.php) [function.include]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/zacky/public/www/blog/phptemp/0094907743.php on line 643

    Warning: include() [function.include]: Failed opening 'http://zacky.web6.jp/blog/hottopic.php' for inclusion (include_path='.:/usr/local/share/pear') in /home/zacky/public/www/blog/phptemp/0094907743.php on line 643

    Warning: include(http://zacky.web6.jp/blog/bmw_ring.php) [function.include]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/zacky/public/www/blog/phptemp/0094907743.php on line 644

    Warning: include() [function.include]: Failed opening 'http://zacky.web6.jp/blog/bmw_ring.php' for inclusion (include_path='.:/usr/local/share/pear') in /home/zacky/public/www/blog/phptemp/0094907743.php on line 644

    +Linkage+

    +Blog Status+

    Entries : 447
    Comments : 721
    Trackbacks : 79

    visitors now.

    +Powered by+