「こちらの記事」で書いたとおり、同じUSER_AGENTの業者から繰り返しスパム行為を受けました。
IPやホスト名によるフィルタで対応していましたが、4社間をローテーションするようにスパム行為を続けるため、対応するのも煩わしくなりました。
そこで「spam_filter.php」で業者の特徴であるUSER_AGENTをブロックすることにしました。
設定方法
今回の業者のUSER_AGENTは「Mozilla/5.0 (Windows NT 5.1; rv:6.0.1) Gecko/20100101 Firefox/6.0.1」なので正規表現に直してブロックリストに追加する。
「Mozilla¥/5¥.0 ¥(Windows NT 5¥.1; rv:6¥.0¥.1¥) Gecko¥/20100101 Firefox¥/6¥.0¥.1」と直した。
正規表現の書き方については「以前書いた記事」を参照して下さい。
「spam_filter.php」の117行目あたり
//// useragent - HTTP_USER_AGENTによるフィルタ // 許可しないHTTP_USER_AGENTの正規表現 define('SPAM_FILTER_USERAGENT_REG', '/WWW-Mechanize|libwww|Mozilla¥/5¥.0 ¥(Windows NT 5¥.1; rv:6¥.0¥.1¥) Gecko¥/20100101 Firefox¥/6¥.0¥.1/i'); define('SPAM_FILTER_USERAGENT_PLUGIN_NAME', 'tracker,recorder,edit,comment,pcomment,article,attach');
とした。
さらに「pukiwiki.ini.php」に追加した「spam_filter.php」用のタグ
define('SPAM_FILTER_COND', '#atag() or #urlbl() or #ipbl() or #onlyeng()');
にユーザーエージェントをブロックする機能を加える「#useragent()」を追加して
define('SPAM_FILTER_COND', '#atag() or #urlbl() or #ipbl() or #onlyeng() or #useragent()');
とした。
これで同じソフトを使って荒らし行為を繰り返す業者の書き込みをブロックできる。今回はPukiWikiのプラグインの設定でしたが、cgiで書かれた掲示板やCMSでも同じような設定項目があるはずなので、応用できると思います。