2008/09/01
COREBlog2 でのトラックバックスパム対策(その2)
作成者 takanori
—
投稿日
2008年09月01日 23時27分
最終変更日時
2008年09月01日 23時27分
COREBlog2 でのトラックバックスパム対策(その1) では、トラックバックスパムに含まれているキーワードを抽出しました。
次に、COREBlog2 のトラックバックを受け付けるスクリプトで、これらのキーワードが含まれているかチェックするようにします。
基本的なコードはかなり以前に書いた COREBlog2 簡易 trackback spam 対策 と同じような形式になります。
portal_skins/COREBlog2/tbping を以下のようにカスタマイズします。
変更前
title = cbtool.convert_charcode(form['title'])
blog_name = cbtool.convert_charcode(form['blog_name'])
excerpt = cbtool.convert_charcode(excerpt)
url = cbtool.convert_charcode(form['url'])
#Try to add trackback
try:
#Send notify mail if need
if context.getSend_trackback_notification():
try:
変更後
title = cbtool.convert_charcode(form['title'])
blog_name = cbtool.convert_charcode(form['blog_name'])
excerpt = cbtool.convert_charcode(excerpt)
url = cbtool.convert_charcode(form['url'])
from re import compile
NON_WORD_REGEX = compile(r"[\W\-]+")
buzz_words = (
'wellbutrin',
'tarmadol',
'acomplia',
'propecia',
:
)
#Try to add trackback
try:
# buzz word check
s = NON_WORD_REGEX.sub(" ", "%s %s %s %s" % (title, blog_name, url, excerpt)).lower().split()
for word in s:
if word in buzz_words:
raise RuntimeError, 'buzz word error'
#Send notify mail if need
if context.getSend_trackback_notification():
try:
コードの中身は前半で buzz_words にキーワード一覧を定義しておきます。
その後、 buzz word check と書いてあるところで、トラックバックの中に含まれている言葉に buzz_words に含まれている単語がないか調べて、含まれている場合はエラーを返しています。
あ、前回と同様 re モジュールを使っていますので、 PythonScript で標準以外のモジュールを使う で書いてある設定が必要です。
でも、この形式だと新しいキーワードのトラックバックスパムがどどどっと押し寄せると、意味ないんですよねぇ。
# 今日1日で140以上のトラックバックスパムが書き込まれてます...
というわけで次は別な対処方法を行います。
(さらにつづく)
- カテゴリ
-
coreblog
-
- ¦
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://takanory.net/takalog/967/tbping
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。
zope/plone関係の技術的な内容については