April 07, 2004

Hacking the Hack: MT コメントSPAM Blacklist ファイル更新

[ Movable Type ]
一部の方に好評なようなのでさらに Hack。blacklist ファイルを Comment 通知メールから更新できるようにしてみます。 以下のような mt-blacklist-append.cgi ファイルを mt.cgi とおなじとこにおきます。$blacklist は blacklist ファイルの絶対パス、$password は適当に決めてください。

miyagawa さんによるコメントスパム対策CGI。サーバ側でブラックリストを保持して不正コメントを URL ベースで拒否、コメント通知メールでブラックリストへの追加を行うという Hack。すばらしい。便利なので我が家にも導入しました。

MT コメントSPAM対策
http://blog.bulknews.net/mt/archives/000903.html

MT コメントSPAM Blacklist ファイル更新
http://blog.bulknews.net/mt/archives/000910.html

で、コメント通知メールからブラックリストへ追加する cgi であるところの mt-blacklist-append.cgi、ブラックリストへの URL 追加と同時にそのときついたスパムコメントを削除してしまったほうがより幸せな感じなので、Hacking the Hack。

Movable Type API を使ってコメントを削除して、該当のエントリと Main Index をリビルド。API があるので朝飯前。

#!/usr/local/bin/perl -w
# mt-blacklist-append.cgi
# written by Tatsuhiko Miyagawa (http://blog.bulknews.net/mt/archives/000910.html/)
# modified by Naoya Ito <naoya@naoya.dyndns.org>
 
use strict;
use CGI;
use FileHandle;
 
use lib qw(/path/to/mt/lib); 
use MT;
use MT::Entry;
use MT::Comment;
 
my $mt_cfg    = "/path/to/mt/mt.cfg";
my $blacklist = "/path/to/blacklist";
my $password  = "blahblah";
 
do_task(CGI->new);
 
sub do_task {
    my $q = shift;
    $q->param('password') eq $password
        or return show_error($q, "Password mismatch");
 
    my $out = FileHandle->new(">>$blacklist")
        or return show_erorr($q, "$blacklist: $!");
    $out->print($q->param('url'), "\n");
    $out->close;
 
    ## deleting a spammed comment from your database and rebuild the entry.
    my $mt = MT->new( Config => $mt_cfg );
    my $comment = MT::Comment->load($q->param('id'))
	or return show_error($q, "Comment not found");
    my $entry = MT::Entry->load($comment->entry_id)
	or return show_error($q, "Entry not found");
    $comment->remove
	or return show_erorr($q, "Removing comment failed: " . $comment->errstr);
    $mt->rebuild_entry( Entry => $entry )
	or return show_error($q, "Rebuliding entry failed: " . $mt->errstr);
    $mt->rebuild_indexes( BlogID => $entry->blog_id)
	or return show_error($q, "Rebuilding index failed: " . $mt->errstr);
 
    print $q->header, "Blacklist appended successfully.";
}
 
sub show_error {
    my($q, $msg) = @_;
    print $q->header, "Error: $msg";
}

追加したのは頭の方の Movable Type ライブラリ呼び出しの部分 (use lib 〜 use MT::Comment)、my $mt_cfg の一行、"deleting a spammed..." コメントから print $q->header の直前までの三箇所です。

改造に伴って、この cgi にコメントの ID を渡す必要があるので、MT/App/Comments.pm に加えた、メールに "Blacklist this URL?" を掲載するための箇所を編集します。

先の miyagawa さんのエントリ では 2.5系が対象で、2.6系と MT/App/Comments.pm のコードが異なっており、僕のはこんな風になってます。

243行目から、

$app->translate('URL:') . ' ' . $comment->url . "\n\n" .
$app->translate('Comments:') . "\n\n" . $comment->text . "\n\n" .
"Blacklist this URL?\n" .
$app->base . $app->path . "mt-blacklist-append.cgi?password=blahblah&url=" .
 MT::Util::encode_url($comment->url) . "&id=" . $comment->id;
MT::Mail->send(\%head, $body);

といった具合です。

これで届いたメールに記載された URL をクリックすると、要らないコメントが削除されブラックリストが更新されます。

解説はしょりすぎですいません。

Posted by naoya at April 7, 2004 12:05 AM | トラックバック (14)  b_entry.gif
トラックバック [14件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/966
URL ベースのコメント SPAM 対策導入
Excerpt: いっちょまえにコメント SPAM が多くなってきたので色々対策中なんですが、miyagawa 氏が Hack した URL 欄を見てフィルタリングしてくれる機能を導入しました。IP アドレス変えてくる SPAM に効き目あります。 blog.bulknews.net: MT コメントSPAM対策 コメントSPAMがか...
Weblog: bricklife.*
Tracked: April 7, 2004 03:40 AM
コメントSPAM対策その2
Excerpt: 昨日施した処置が既に時代遅れという悲しい結果になったのを受け、新たな処置を施した。
Weblog: talk to oneself 2
Tracked: April 7, 2004 05:36 PM
コメントスパム対策・2
Excerpt: スパムコメント通知メールから Blacklist を更新できるようにする。2.66。
Weblog: チェリオメアリー
Tracked: April 7, 2004 08:57 PM
URLによるコメントSPAM対策の続き
Excerpt: まとめがてら、自分用にメモ blog.bulknews.net: MT コメントSPAM Blacklist ファイル更新より 一部の方に好評なようなのでさらに Hack。blacklist ファイルを Comment 通知メールから更新できるようにしてみます。 miyagawaさんによる追加Hack。フィルタするURLのBlackli...
Weblog: 人生迷い箸
Tracked: April 9, 2004 11:10 AM
基本はイメージだろイメージ
Excerpt: なんで、イメージでブロックの話が出てこないんだ? ここだけなのか? こんなことしてるの? これが基本対策だと思うんだけどな。 ...
Weblog: それ
Tracked: April 12, 2004 11:40 AM
spam spam 神経すりへり
Excerpt: 寿限無にあわせて題名考えたけどおバカだ^^; その続きは特に思い浮かばずw #某養成所に居た時覚えさせられた記憶があるが、もう全部覚えてないw まぁ、そんなわけで、結構ぼちぼちspamが来るようになったので、MTをspam対策してみた。...
Weblog: 僕ト云フ事
Tracked: April 18, 2004 05:06 AM
spam spam 神経すりへり
Excerpt: 寿限無にあわせて題名考えたけどおバカだ^^; その続きは特に思い浮かばずw #某養成所に居た時覚えさせられた記憶があるが、もう全部覚えてないw まぁ、そんなわけで、結構ぼちぼちspamが来るようになったので、MTをspam対策してみた。...
Weblog: 僕ト云フ事
Tracked: April 18, 2004 05:07 AM
MT コメントスパム対策の国際化
Excerpt: miyagawa さんの「blog.bulknews.net: MT コメントSPAM Blacklist ファイル更新」と NDO::Weblog の naoya さんの「NDO::Weblog: Hacking the Hack: MT コメントSPAM Blacklist ファイル更新」を参考にスパム対抗準備してたのですが、自分以外の人間も同じ MT を使ってい...
Weblog: klog
Tracked: April 21, 2004 01:27 AM
MT コメントスパム対策の国際化
Excerpt: miyagawa さんの「blog.bulknews.net: MT コメントSPAM Blacklist ファイル更新」と NDO::Weblog の naoya さんの「NDO::Weblog: Hacking the Hack: MT コメントSPAM Blacklist ファイル更新」を参考にスパム対抗準備してたのですが、自分以外の人間も同じ MT を使ってい...
Weblog: klog
Tracked: April 21, 2004 01:49 AM
Banned
Excerpt: すいません、なんか設定しくってたらしく、コメントを付けようとすると「You are banned」とか表示されてできない状態になっていたようです。 別にBanされたわけじゃなくて、こちらの設定ミスです。もう修正しました。 その状態のときにコメントしようとしてくれた人、び...
Weblog: Nebosuker.net::EQ
Tracked: June 8, 2004 09:35 PM
Banned
Excerpt: すいません、なんか設定しくってたらしく、コメントを付けようとすると「You are banned」とか表示されてできない状態になっていたようです。 別にBanされたわけじゃなくて、こちらの設定ミスです。もう修正しました。 その状態のときにコメントしようとしてくれた人、び...
Weblog: Nebosuker.net::EQ
Tracked: June 8, 2004 09:37 PM
コメントスパム対策2
Excerpt: このエントリにてコメントスパム対策をしましたが、それでもコメントスパムが減らないので、新たなコメントスパム対策をしてみました。 まず、コメント欄のURLをブラッ...
Weblog: Yoshi Blog
Tracked: November 7, 2004 09:49 PM
URL によるコメント SPAM 対策
Excerpt: Movable Type Ver 3.x に対応。(たぶん) ・コメント通知メ...
Weblog: yokku notes
Tracked: November 28, 2004 02:44 PM
人妻密会倶楽部
Excerpt: 今回ご紹介するのはバリバリの女社長です!!日々仕事に追われ、なかなか男性との出会いの少ない女社長がかなり増えてきています。彼女達のなかには、逆援OKの方もいらっ...
Weblog: 代表取締役:真理子
Tracked: July 19, 2005 05:08 PM
コメント [1件]

コメント削除の部分だけ拝借しました。ちょー便利。
Blacklistは追加したくない場合もありそうなので、
テンプレート編集でやってます。

[1] Posted by: ooba at April 7, 2004 09:27 PM [返信]
コメントする









名前、アドレスを登録しますか?