最近多発しているツッコミ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_.-][email protected][\(\)%!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: メールアドレス形式のチェックを追加
2バイト文字をまったく含まないツッコミを弾く、という条件を追加すると、不完全なメールアドレスを含むもの、意味不明なものも大半は弾くことができると思います。
それをspamと判断するかどうかは個人差があるので公式には採用できません。日本語が読めるけど書けない外国人からのツッコミは、ときどき見かけますから。
間違っていたらすいません、6つ以上ですよね?
仰るとおりです_| ̄|○
antispam.rbをアップロードすると、ブラウザでアクセスしたときに"uninitialized constant TDiary::Filter::AntispamFilter (NameError)"となってしまいます。"tdiary.rb:1043:in `const_get'"で発生しているようです。複数の日記を管理しているのですが、アップロード先など、何か基本的なところで間違えているのでしょうか?
最初の3行が、一言一句正しいかどうか確認してください。1文字でも違っているとそのエラーが出ます
ご教示ありがとうございます。ファイルの内容は問題なしでした。が、自宅に帰って再度やってみたらすんなり動いてしまいました。出先ではproxyが入ってたりするのでキャッシュが悪さしてたのかも。全然無関係なところでの凡ミスの可能性大ですorz...
とりあえず導入させていただきましたm(__)m<br>あと気になる変なスパムっぽいので1行だけで<br>URLを複数の記事に書き込まれるのがあるのですが<br>もしかしたらスピードコメントのプラグインに関係あるかもしれないので消してみたけど、またあったら報告します<br>PS表示スパムのゴミが溜まってうっとおしいです(´Д`;
それって、メールアドレスが特徴的ではないですか? 上のフィルタはそのメールアドレスもはじく対象にしてるんですが
早いコメントありがとうございます、弾く対象を勘違いしてたようです。運用続けてみます
同じく被害を受けています。これ導入してみます。
英語の場合2単語以下、日本語の場合5文字以下のつっこみなんて自分で意味のある情報をつっこんでいるとは思えないのではじくというのはいかがでしょうか?
「good job!」なんてツッコミはありえると思います。「なんでやねん」……は6文字か。狭いコミュニティになると、短いツッコミが増える傾向があるので、その判断基準は難しいですね
なるほど。←これだけだと5文字か^^;
導入しましたが早速、条件に該当しないメールアドレスからのSPAMの攻撃を受けています。<br>内容を見てキーワード("ばいあぐら"とか"えっくすえっくすえっくす"とか)ではじかないと駄目かなあと思います。<br>最終的には認証などで使われる、文字列が描かれた画像を表示して、それを入力しないと突っ込みできないって仕組みも必要かも。でも、携帯端末だと入力が面倒か。
本文中に書いたURLへ誘導するのがspam屋の目的だとしたら、メールアドレスは書かなくてもいいんですよね。その場合、5URLまでならフィルタ素通しになっちゃうような気がするのですが……杞憂でしょうか。
そのように説明してあるつもりなんですが……。<br>ツッコミ内にいくつのURLを認めるかは、日記オーナーの判断しだいですから、5個では多すぎるという方は数字を書き換えてお使いください
私が心配したのは「メールアドレスのチェックは、空欄にすることで回避できてしまうのでは?」ということでした。<br><br>ただ、それに対して「その場合でも、本文中にURLを書いていれば、デフォルトで5URLまでしか書けないし、設定変更すればもっと少なくもできる(それこそURLを1個でも書いたらハネるようにもできる)ので、心配無用」という回答を得た、と理解します。
先にお伺いしておくべきでした。ツッコミspam屋って、メールを送ってくるわけではないのに、特徴的なメールアドレスをわざわざ記入してくる習性があるんでしょうか?(今までの実例として)<br>それなら、URLの上限数にかかわらず「空欄で回避」を心配する必要はなくなります。
spamは多様なので一般的な話などできません。いずれにしてもここはそういう話をする場ではないので私見は述べません。<br>このフィルタ作成の背景は私の日記にあります: http://sho.tdiary.net/20050812.html#p01
なるほど。背景となる日記を拝見して、理解しました。ありがとうございます。
BSFILTERというベイジアンスパムフィルターを組み込んでいます。
間違えました。<br>BSFILTERというベイジアンスパムフィルターを組み込んでいる最中です。
ベイジアンフィルタ組み込みは難しくないんですが、最大のハードルはspam/hamの学習契機ですね
現在メールのスキャンを同じアルゴリズムのPOPFILE+KAKASIでやっているのですが、数万単語数のデータが取れた時点でほぼ100%のフィルタをしています。<br>何かテーマが見えるような内容であれば結構いけると思っています。
tDiary お世話になっています。<br><br>あら探しみたいで恐縮なのですが、「このフィルタの動作は、以下のとおりです:」以下の説明文が、9月12日のスクリプトの変更に対応していません。謹んでご指摘申し上げます。
ご指摘どうも。直しました。