スパムフィルタプラグイン(SpamFilter Plugin)
ポイント制のヒューリスティクスに基づいてスパム投稿を自動検出・ブロックするプラグインです。
ファイル配置 : backend/plugins/SpamFilter/SpamFilterPlugin.php
項目
内容
プラグイン名
スパムフィルタ
フックタイプ
TEXT_FILTER | BEFORE_POST(複合フック)
バージョン
1.0.0
移植元
0ch_spamkiller.pl
投稿内容を複数の条件でチェックし、各条件に該当するとポイントが加算されます。
合計ポイントが閾値以上になるとスパムと判定します。
条件
デフォルトポイント
検出方法
名前欄が ASCII 文字のみ
+2
半角英数記号・空白のみで構成
メール欄に @ を含む
+5
実際のメールアドレスが入力されている
本文に <a href= または [url= を含む
+5
HTML タグや BBCode リンクの使用
本文に URL を含む
+3
http:// または https:// の存在
本文の ASCII 比率が閾値以上
+2
英語のみのスパム投稿を検出
名前欄: "Mike Smith" → +2(ASCII のみ)
メール欄: "test@example.com" → +5(@ 含む)
本文: "Visit https://spam.com" → +3(URL 含む)
──────────────────────────────
合計: 10 ポイント >= 閾値 10 → スパム判定
日本語の通常投稿では名前欄・本文ともに日本語が含まれるため、ポイントが加算されにくい設計になっています。
設定キー
型
デフォルト
説明
name_ascii_point
int
2
名前欄が ASCII のみの場合のポイント
mail_atsign_point
int
5
メール欄に @ がある場合のポイント
text_ascii_point
int
2
本文の ASCII 比率が閾値以上の場合のポイント
text_ahref_point
int
5
本文に HTML/BBCode リンクがある場合のポイント
text_url_point
int
3
本文に URL がある場合のポイント
設定キー
型
デフォルト
説明
text_ascii_ratio
int
95
ASCII 比率がこの値(%)以上でポイント加算
threshold_point
int
10
合計ポイントがこの値以上でスパム判定
設定キー
型
デフォルト
選択肢
action
select
block
block(投稿拒否) / warn(警告ログのみ、投稿は許可)
threshold_point を引き上げる(例: 10 → 15)
各ポイント値を下げる
action を warn に変更してログで様子を見る
threshold_point を引き下げる(例: 10 → 8)
該当するスパムの特徴に応じたポイント値を引き上げる
text_ascii_ratio は本文からタグと空白を除去した後のASCII文字の割合
日本語掲示板では 95%(デフォルト)で英語のみのスパムを効果的に検出できる
英語の投稿も許可したい場合は値を上げるか、text_ascii_point を0にする