・wiki spam check
Pythonの練習がてら、httpdのaccess_logから短時間にPOSTを繰り返すIPアドレスを抽出するような スクリプトを書いてみた。
check_spam.py という名前でこのページに添付しておくので、興味ある人はご覧ください。
やってることは単純で、前にチェックした時間(last_checked)を手元に記録しておいて、 access_logに記録されたその時間以後の履歴について、 1)4回以上POSTして、 2)POST間の平均間隔が45秒以下 のアドレスをspam元と判断している。
一応、ログファイルの位置等はPlamo-4.73に合わせているけど、 それらは先頭部分で定義しているので、Plamo以外の環境でも使えるのではないかと。
# httpdのログ形式はcombined format決め打ちだが
一応、添付のスクリプトではコメントアウトしているけど、 spam元のアドレスをconfファイルに書き出して、自動的にbanリストを更新するような機能も付けてみた。
手元では、このスクリプトをcrontabで6時間ごとに実行しているけど、毎回3〜4個ずつbanされるアドレスが増えていく。。