先日のコメントスパム弾き実験のまとめでまとまったかなと思っていたコメントスパム対策ですが、今日連続で5つほどやられました。

コメントをポストしてもらうときのURL欄に書いたURLのホスト部が、コメント本文内に6回以上出てきたら...みたいな処理を入れていたのですが、そうでないところへのリンクをはりまくったコメントを書かれてしまったのでした。ということで、そんなぬるいことを言ってないで、コメント本文内に5つ以上のリンクがあったらそれはスパムだと判定するように変更。

また、どうにも効果がなさそげだし、あれこれ調べてから頂いたコメントが制限時間を超えてしまってスパム判定されるというリスクの方が高いように思うので、コメント記入ページを表示してから実際にコメントをポストするまでの時間制限は撤廃することにしました。

もひとつ。
先日3つほどつけられたコメントスパムは、コメント本文は英語だけどそれなりにまっとうな文章。「あなたの意見にはおおむね賛成です。でもものごとには良い面と悪い面があり、..」みたいな感じ。リンクもURL欄にひとつだけ。でもそのひとつのリンクはエロサイトというか、そういうところへのもの。これはURLにややこい文字列があったので、URLもスパムか否かの判定をする対象とした方がよさそげ。
ということで、methods/beforeAddCommentは以下のような感じで。
清水川さんのCOREBlog1.2.1がリリース -- 清水川 WebCentral Core ノーティフィケーション How-toを参考に methods/beforeAddComment を以下のように設定。

大ざっぱな流れとしては、
- とりあえずコメントがついたことを電話などのメールに通知
- 本文とかURLにjunkwordがあったらスパム判定(junkwordsは前述の清水川さんとこに倣いline型で、内容はそれげな単語をつらつらと。)
- 本文にリンクが5つ以上あったらスパム判定
という感じ。

if d["moderated"] == 0:
    return d

if d["body"].count("href") >= 5:
# There are 5 or more links....., maybe spam
    d["moderated"] = 0
else:
    d["moderated"] = 1
return d

2006/Jan/26 18:07追記
大量のコメントスパムをくらってしまいましたにて書きましたが、コメントスパムを弾く上記メソッドにてバグがあったため修正しました。

2006/Jan/27 19:28追記
上記メソッドを再度変更しました。
Posted by setomits at 12:04 | Comments: 0
Leave a comment
Required fields are marked with *
search
calendar
Jul 2009
SunMonTueWedThuFriSat
   1234
567891011
12131415161718
19202122232425
262728293031 
archives
photos on flickr
www.flickr.com
bookmarks on delicious