スパムフィルタのコードをキーワード方式に変更しました。

2005/03/23

2005/02/08 [スパムコメント対策: URLフィルタを施してみました。
スパムコメント対策: URLフィルタを施してみました。]
の記事でもお伝えした通り、一斉に襲ってくる コメントスパム に対応するために、
MovableType の Comments.pm を書き換えて、スパムのフィルタリングを行っています。
 
前回の記事でもご紹介しましたが、miyagawaさんの記事あまやんさんの記事
からほとんどそのまま流用させて頂いたコードを動かしておりました。
その内容がこちら。
use FileHandle;
my %banned_url;
my $blacklist =
  "(MTインストールディレクトリ)/lib/MT/App/antispam.txt";
my $fh = FileHandle->new( $blacklist ) or die "$blacklist: $!";
while ( <$fh> ) {
  chomp;
  if ( $_ ne "" ) { $banned_url{$_} = 'death'; }
}
if( $banned_url{ $q->param('url') } ) {
  return $app->handle_error('COMMENT SPAM rejected.');
}

(インデントが全角スペースですので、コピペの際はご注意ください。)
 
これで antispam.txt に列挙されたURLと同じURLを指定したコメントは
フィルタされることになります。当初はかなりの効果を発揮していました。
 
ところが最近、結構な勢いで この網をすり抜けるスパム が横行しています。
というのも、最近のスパムはURLのうしろに xxxxxx-yyyy.html のようなhtmlを
つけてくるのです。現在のコードですとURLの 完全マッチ しか行いませんので、
ちょっと違ったURLを作られると、どんどんすり抜けられてしまいます。
 
そこでいっそ、完全マッチ方式をやめ、
 
 指定キーワードを含んだURLは全て弾く
 
という方式に変更することにしました。それがこのコードです。
use FileHandle;
my $blacklist =
  "(MTインストールディレクトリ)/lib/MT/App/antispam_keyword.txt";
my $fh = FileHandle->new( $blacklist ) or die "$blacklist: $!";
while( <$fh> ) {
  chomp;
  if ( $_ ne "" && $q->param('url') =~ /$_/ ) {
    return $app->handle_error('COMMENT SPAM rejected.');
  }
}

antispam_keyword.txt に羅列されたキーワードが、コメントの指定URLに
一部でもマッチ すれば、スパムと判定して弾く仕組みになっています。
 
そのキーワードのほうは、現在こんな感じで 100個ちょっと がリストされていますが、
 
 現時点でのスパムキーワード: antispam_keyword.txt
 
従来の完全マッチ方法で 1,000以上のURL をリストしていたものが、
この100個程度で問題なくカバーできることになりました。
たとえば「-casino」と「casino-」というキーワードでは、
「online-casino」も「free-casino」も「happy-casino」も「casino-games」も
みんな一様に弾いてくれることになるワケです。
 
今後も折を見てリストを増やしていく予定です。ただ、キーワードの設定の
仕方が巧くないと、稀に正当なURLも弾いてしまう 場合が有り得ます。
もし、このブログでそうしたトラブルがありましたら、その旨を
掲示板 のほうでご連絡頂ければ幸いです。(=゜ω゜)ノ


2005/03/23 [updated : 2005/03/23 14:32]


この記事を書いたのは・・・。
CK@デジモノに埋もれる日々 @ckom
ブログ「デジモノに埋もれる日々」「アニメレーダー」「コミックダッシュ!」管理人。デジモノ、アニメ、ゲーム等の雑多な情報をツイートします。




« 特別企画おまけ - BiBio JukeBox 解体新書

トップに戻る

USBメモリ付きボールペン、サンコーにライバル登場!? »


▼ はてなブックマークのコメント ▼



2024年のご挨拶


全力Vの1年:2023年振り返り~2023年も大変お世話になりました。2024年も宜しくお願いいたします。


2023年あけましておめでとうございます。デジモノに埋もれる様子をお届けできない日々


"V"にハマった1年:2022年振り返り~2022年も大変お世話になりました。2023年も宜しくお願いいたします。


(状況のご報告)Twitterアカウントの状況について ※2022.11.08追記あり


連投メモ:「ツイートで『ブログ』を書く」お話と、ガジェット系からイベントレポ系に遷移していった時のお話


2022年あけましておめでとうございます。よろず話はカーナビの「ジャイロ」ご乱心のお話


2021年も大変お世話になりました。2022年も宜しくお願いいたします。


2021年あけましておめでとうございます。よろず話はレンタカーと「一脚」テスト。


2020年も大変お世話になりました。2021年も宜しくお願いいたします。


2020年あけましておめでとうございます。今年はちゃんと歯を磨きます。。。


2019年も大変お世話になりました。2020年も宜しくお願いいたします。

ピックアップタグ




ブログ内検索



▼ コメント ▼


★コミックダッシュ! 10,000人突破ありがとうキャンペーン!(9/18~10/23)
 
デジモノに埋もれる日々 : (C) CKWorks