パーソナルツール
現在の場所: ホーム takalog COREBlog2 でのトラックバックスパム対策(その1)
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
« 2012May »
Su Mo Tu We Th Fr Sa
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
このBlogについて
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。 zope/plone関係の技術的な内容については http://takanory.net の方にまとめていこうと思います。 コメント・ツッコミはご自由にどうぞ。
twitter facebook linkedin foursquare
カテゴリ
android (16)
av (27)
books (35)
coreblog (49)
ds (22)
emacs (8)
ferret (24)
google (34)
icecream (44)
lego (70)
mac (22)
misc (74)
moblog (277)
movie (33)
pc (44)
plone (338)
puzzle (42)
python (57)
server (67)
snowscoot (9)
software (125)
sports (32)
suidou (30)
winds (47)
 
文書操作

COREBlog2 でのトラックバックスパム対策(その1)

作成者 takanori投稿日 2008年08月30日 14時38分 最終変更日時 2008年08月30日 14時40分
トラックバックのキーワード一覧

以前から COREBlog2 簡易 trackback spam 対策 によって、このブログにトラックバックスパムがこないようにしていたんですが、気づいたらコードがなんか変わっていたようで、エラーを出すようになっていました。(汗)

# なので、いくつか正しいトラックバックも落としちゃっていたような感じがします。

というわけで、もう一回トラックバックスパム対策をきちんとやってみようと思います。

基本的には以前と同じように、トラックバックスパムに含まれている単語をチェックする形式にしようと思うので、現在のスパムの中身を解析して見ます。

まずは、カスタマイズしていた tbping スクリプトを削除(または違う名前に)します。

すると、トラックバックスパムが来まくると思われるので、トラックバックのワークフローを切り替えます。私の場合は portal_workflow で初期状態が privatepublished に変更できるワークフローを作成して、 COREBlogTrackback に対してそのワークフローを設定しました。

それから少しサイトをほうっておいてトラックバックスパムを貯めてから、下記のスクリプトを実行して出現する単語の数を数えます。

ちなみに、初期状態では Python Script では使えない re モジュールとか使ってますので、 PythonScript で標準以外のモジュールを使う に記述したような形で使えるようにします。

from re import compile
NON_WORD_REGEX = compile(r"[\W\-]+")

# private 状態のトラックバックを検索
catalog = context.portal_catalog
results = catalog.searchResults(meta_type='COREBlogTrackback', review_state='private')

words = {}

for result in results:
    tb = result.getObject()
    # タイトルやブログの名前を単語に分割
    s = " ".join((tb.title, tb.blog_name, tb.url, tb.excerpt))
    s = NON_WORD_REGEX.sub(" ", s).lower().split()
    # 出現した単語の数を数える
    for word in s:
        words[word] = words.get(word, 0) + 1

# 単語を出現数順に並べ替える
words_tuple=words.items()
words_tuple.sort(lambda x,y:y[1]-x[1])

for word, count in words_tuple:
    print count, word

return printed

そして、このスクリプトを実行した結果が添付の画像です。

buy, http, com みたいな一般的な単語は抜いて、次に作成するトラックバックスパム対策用のスクリプトで単語リストとして使用します。

(つづく)

カテゴリ
coreblog coreblog
plone plone
トラックバック用URL:
http://takanory.net/takalog/965/tbping
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)
Enter the word

Powered by vine linux, python, zope, plone, coreblog