2004-09-23 (木) [長年日記]
_ リファラ SPAM 129 件
とうとう私のところにも来てしまった。今回来たアドレスは1つだけだったが、今後のことも考え /sex|adult/ にマッチするリファラを制限することにする。ちょっと判定が甘い気もするが、違う SPAM が来た時はその都度ルールを追加すればよい。
まず、すでに書き込まれてしまった SPAM だが、tdr を直接書き変えるのも何なので、以下のようなプラグインで対処する。
# hide_referer.rb
eval( <<-TOPLEVEL_CLASS, TOPLEVEL_BINDING )
module TDiary
module RefererManager
def remove_referer( ref )
uref = CGI::unescape( ref )
@referers.delete( uref )
end
end
end
TOPLEVEL_CLASS
if @mode != 'edit' then
@diaries.each_value do |diary|
limit = diary.count_referers
diary.each_referer( limit ) do |count, ref|
diary.remove_referer( ref ) if /sex|adult/ =~ ref
end
end
end
eval を使うと人間をダメにする好例のようなプログラムだが、これを使うと編集時以外は対象のリファラが非表示になる。編集時だけ表示されるようになっているのは、どんな SPAM が来たのか見たい時もあるかもしれないからである。
次に、これから来る SPAM の対策だが、tDiary のフィルタ機能を使って以下のように対処する。
# spam.rb
module TDiary
module Filter
class SpamFilter < Filter
def referer_filter( referer )
/sex|adult/ !~ referer
end
end
end
end
なお、コメントフィルタと併用する場合は、適当にマージする必要がある。
_ ADSL が繋がらない
ので NTT に電話したら、モデムの電源を入れなおしてくれと言われた。そのとおりにやったら復活したが、今までそんな事したことないのに何でだろう?
_ 今日のアニメ
- きまぐれオレンジロード#46
- スキー場で恭介とまどかの乗ったゴンドラが止まってしまい、中で夜を明かす。
[ツッコミを入れる]


