tDiary.org - 日記コミュニケーションを加速する


最近多発しているツッコミspamへの対策

Last Update: 2011-11-03 17:45:14

2005年の夏ごろから、tDiaryのツッコミを狙ったと思われるspamが多発しています。ひどいときは単一の日記に連続して数十のツッコミをしていくため、迷惑している方が多いと思われます。

とりあえずの対策として、tDiary 2.0から利用できるようになったフィルタ機能を使って、spamをはじく方法を記載します。少なくともこれで、spamが記録されることはなくなりますので、ご利用ください。

以下のコードを、tDiaryインストールディレクトリにあるtdiary/filterディレクトリに「antispam.rb」という名前で作成します。ファイル名を変えると動作しないので気をつけてください。

module TDiary
   module Filter
      class AntispamFilter < Filter
         def comment_filter( diary, comment )
            mailregexp = r = /^[0-9a-zA-Z_.-]+@[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+(\.[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+)*\.[a-zA-Z]{2,6}$/

            if /@(yahoo|hotmail|gmail|aol|leroy|ablare|gmx)\.com$/ =~ comment.mail
               false
            elsif comment.mail.length > 0 and mailregexp !~ comment.mail
               false
            elsif comment.body =~ /href=/
               false
            elsif comment.body.scan( %r|https?://| ).size > 2
               false
            else
               true
            end
         end
      end
   end
end

このフィルタの動作は、以下のとおりです:

  • メールアドレスに、@yahoo.com、@hotmail.com、@gmail.com、@aol.com、@leroy.com、@ablare.com、@gmx.comを含むツッコミを記録しない
  • メールアドレスが正しい形式になっていないツッコミを記録しない
  • 本文に「href=」を含むツッコミを記録しない(aタグが使われていると判断)
  • 本文にURLを3つ以上含むツッコミを記録しない

偶然これらにマッチするspamでないツッコミもはじいてしまうことになりますが、滅多にないはずなので、現状では許容せざるを得ません。

追記

  • 2006-05-17: 「href=」を含むツッコミを排除
  • 2005-09-12: URLが3つ含まれるspamが増大したため、URLの閾値を3に変更。さらにメールアドレスに「@gmx.com」を追加
  • 2005-08-12: メールアドレス形式のチェックを追加
コメント(27) [コメントを投稿する]
inoue (2005-08-08 17:03)

 2バイト文字をまったく含まないツッコミを弾く、という条件を追加すると、不完全なメールアドレスを含むもの、意味不明なものも大半は弾くことができると思います。

ただただし (2005-08-08 17:09)

それをspamと判断するかどうかは個人差があるので公式には採用できません。日本語が読めるけど書けない外国人からのツッコミは、ときどき見かけますから。

通りすがり (2005-08-09 10:16)

間違っていたらすいません、6つ以上ですよね?

ただただし (2005-08-09 10:26)

仰るとおりです_| ̄|○

Wakui3 (2005-08-09 14:43)

antispam.rbをアップロードすると、ブラウザでアクセスしたときに"uninitialized constant TDiary::Filter::AntispamFilter (NameError)"となってしまいます。"tdiary.rb:1043:in `const_get'"で発生しているようです。複数の日記を管理しているのですが、アップロード先など、何か基本的なところで間違えているのでしょうか?

ただただし (2005-08-09 18:14)

最初の3行が、一言一句正しいかどうか確認してください。1文字でも違っているとそのエラーが出ます

Wakui3 (2005-08-10 09:51)

ご教示ありがとうございます。ファイルの内容は問題なしでした。が、自宅に帰って再度やってみたらすんなり動いてしまいました。出先ではproxyが入ってたりするのでキャッシュが悪さしてたのかも。全然無関係なところでの凡ミスの可能性大ですorz...

Amby (2005-08-10 12:54)

とりあえず導入させていただきましたm(__)m<br>あと気になる変なスパムっぽいので1行だけで<br>URLを複数の記事に書き込まれるのがあるのですが<br>もしかしたらスピードコメントのプラグインに関係あるかもしれないので消してみたけど、またあったら報告します<br>PS表示スパムのゴミが溜まってうっとおしいです(´Д`;

ただただし (2005-08-10 12:56)

それって、メールアドレスが特徴的ではないですか? 上のフィルタはそのメールアドレスもはじく対象にしてるんですが

Amby (2005-08-10 13:09)

早いコメントありがとうございます、弾く対象を勘違いしてたようです。運用続けてみます 

bon108 (2005-08-11 00:25)

同じく被害を受けています。これ導入してみます。

小西 (2005-08-12 09:05)

英語の場合2単語以下、日本語の場合5文字以下のつっこみなんて自分で意味のある情報をつっこんでいるとは思えないのではじくというのはいかがでしょうか?

ただただし (2005-08-12 09:34)

「good job!」なんてツッコミはありえると思います。「なんでやねん」……は6文字か。狭いコミュニティになると、短いツッコミが増える傾向があるので、その判断基準は難しいですね

小西 (2005-08-12 11:24)

なるほど。←これだけだと5文字か^^;

YOUsuke (2005-08-13 12:07)

導入しましたが早速、条件に該当しないメールアドレスからのSPAMの攻撃を受けています。<br>内容を見てキーワード("ばいあぐら"とか"えっくすえっくすえっくす"とか)ではじかないと駄目かなあと思います。<br>最終的には認証などで使われる、文字列が描かれた画像を表示して、それを入力しないと突っ込みできないって仕組みも必要かも。でも、携帯端末だと入力が面倒か。

AK (2005-08-14 17:46)

本文中に書いたURLへ誘導するのがspam屋の目的だとしたら、メールアドレスは書かなくてもいいんですよね。その場合、5URLまでならフィルタ素通しになっちゃうような気がするのですが……杞憂でしょうか。

ただただし (2005-08-14 21:35)

そのように説明してあるつもりなんですが……。<br>ツッコミ内にいくつのURLを認めるかは、日記オーナーの判断しだいですから、5個では多すぎるという方は数字を書き換えてお使いください

AK (2005-08-14 21:55)

私が心配したのは「メールアドレスのチェックは、空欄にすることで回避できてしまうのでは?」ということでした。<br><br>ただ、それに対して「その場合でも、本文中にURLを書いていれば、デフォルトで5URLまでしか書けないし、設定変更すればもっと少なくもできる(それこそURLを1個でも書いたらハネるようにもできる)ので、心配無用」という回答を得た、と理解します。

AK (2005-08-15 09:05)

先にお伺いしておくべきでした。ツッコミspam屋って、メールを送ってくるわけではないのに、特徴的なメールアドレスをわざわざ記入してくる習性があるんでしょうか?(今までの実例として)<br>それなら、URLの上限数にかかわらず「空欄で回避」を心配する必要はなくなります。

ただただし (2005-08-15 11:19)

spamは多様なので一般的な話などできません。いずれにしてもここはそういう話をする場ではないので私見は述べません。<br>このフィルタ作成の背景は私の日記にあります: http://sho.tdiary.net/20050812.html#p01

AK (2005-08-15 11:50)

なるほど。背景となる日記を拝見して、理解しました。ありがとうございます。

JALAN (2005-08-17 10:29)

BSFILTERというベイジアンスパムフィルターを組み込んでいます。

JALAN (2005-08-17 10:32)

間違えました。<br>BSFILTERというベイジアンスパムフィルターを組み込んでいる最中です。

ただただし (2005-08-17 10:36)

ベイジアンフィルタ組み込みは難しくないんですが、最大のハードルはspam/hamの学習契機ですね

JALAN (2005-08-17 11:08)

現在メールのスキャンを同じアルゴリズムのPOPFILE+KAKASIでやっているのですが、数万単語数のデータが取れた時点でほぼ100%のフィルタをしています。<br>何かテーマが見えるような内容であれば結構いけると思っています。

みかみ (2005-09-12 21:01)

tDiary お世話になっています。<br><br>あら探しみたいで恐縮なのですが、「このフィルタの動作は、以下のとおりです:」以下の説明文が、9月12日のスクリプトの変更に対応していません。謹んでご指摘申し上げます。

ただただし (2005-09-12 22:34)

ご指摘どうも。直しました。


«tDiary 2.0.2、2.1.2リリース 最新 IRCサーバを切り替えました» 編集
Fork me on GitHub