«前の日記(2004-09-22 (水)) 最新 次の日記(2004-09-24 (金))» 編集
にっき
Google
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|10|12|
2015|01|12|
2016|01|12|
2017|01|12|
2018|01|12|
2019|01|12|
2020|01|12|
2021|01|
2022|01|
2023|01|
2024|01|

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
スキー場で恭介とまどかの乗ったゴンドラが止まってしまい、中で夜を明かす。

«前の日記(2004-09-22 (水)) 最新 次の日記(2004-09-24 (金))» 編集