スパムトラバとの戦い -
Posted 11月 21st, 2006 by hippos
in
やっぱり、spam.moduleのカスタムフィルタがうまく動作しない。すり抜けてきた、データをもとに簡単なスクリプトを書いてチェックしてみるとちゃんとマッチするようなので正規表現の問題ではなさそうです。(下品なところは*で伏せ字)
<?php
$excerpt = '<a href="http://an*l-s*x.sax.pl/">an*l s*x</a>';
if (preg_match('/\A[!-~\n ]+\Z/',$excerpt)) {
echo "match!";
}
?>
|
spam.moduleを追っていくのも面倒になったので、trackback.moduleに直接このコードを突っ込むことにしました。trackback_receive()の43行目あたり。仕様上、excerptは省略可能なのでタイトルもチェック対象にしました。
trackback_receive(&$node){
:
// 本文がすべて英数 または 本文がなくてタイトルがすべて英数はspam
$isSpam = 0;
if (preg_match('/\A[!-~\n ]+\Z/',$trackback->excerpt)) {
$is_spam = 1;
}
if (((!$trackback->excerpt)||(strlen($trackback->excerpt)==0)) &&
preg_match('/\A[!-~\n ]+\Z/',$trackback->subject)) {
$is_spam = 1;
}
if ($isSpam == 1){
watchdog('trackback', t('trackback: **SPAM NOT added** \'%subject\'', ...);
}else{
watchdog('trackback', t('trackback: added \'%subject\'', ...);
db_query("INSERT INTO {trackback_received} (trid, nid, created, ... );
:
}
}
|
これでしばらく運用してみます。果たして結果はいかに?
この記事のトラックバックURL:
http://hippos-lab.com/blog/trackback/66










Comments