反垃圾评论:WP Anti Spam + Spam To Blacklist
这年头 Spam(垃圾评论)越来越猖獗,在我们使用的 WordPress 平台亦是如此。
当然,万能的 WordPress 对付 Spam 的方法也有很多。
个人并不喜欢使用验证码、算术题之类的,那虽然很有效,但会给评论者造成麻烦。
而评论审核则会影响体验,仅在离开较长时间才会打开。
再此分享一下我的反垃圾评论方案:免插件的WP Anti Spam + Spam To Blacklist 插件。
这是两个月内收到的 Spam,该清理了~
WP Anti Spam 小墙,免插件的反 Spam 方案
我之前一直是用着 wp 自带的 Akismet ,使用黑名单机制,但无论对机器还是人肉 Spam 都很不错,还能自动学习。
不过时不时会把一些正常的评论误杀了,导致经常要跑去检查垃圾评论- -。
后来发现了这个 WP Anti Spam ,昵称小墙,是免插件拦截垃圾评论的利器。
来自低调的大师 Willin Kan ,周围的很多朋友也在用着,评价很高。
小墙原理和功能
其原理可以简单理解为:添加一个隐藏的资料框(属性为 display:none 的 textarea),因为用户是看不到的,如果该区域被填满则判断为 Spam。
还也能判断一些手动方式的。
另外还在后台提供了spam 的基本资料,包含请求( REQUEST_URI )、来路( HTTP_REFERER )、IP、操作方式,,可提供下一步加强防护的参考。(见上图)
使用 WP Anti Spam 小墙的方法
效果出色,还免插件,没什么好犹豫的。
将以下代码复制到主题的 functions.php 中即可。
/* <<小牆>> Anti-Spam v1.81 by Willin Kan. */
//建立
class anti_spam {
function anti_spam() {
if ( !current_user_can('level_0') ) {
add_action('template_redirect', array($this, 'w_tb'), 1);
add_action('init', array($this, 'gate'), 1);
add_action('preprocess_comment', array($this, 'sink'), 1);
}
}
//設欄位
function w_tb() {
if ( is_singular() ) {
ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#",
"textarea$1name=$2w$3$4/textarea><textarea cols="\"100%\"" rows="\"4\"" name="\"comment\""></textarea>",$input);') );
}
}
//檢查
function gate() {
if ( !empty($_POST['w']) && empty($_POST['comment']) ) {
$_POST['comment'] = $_POST['w'];
} else {
$request = $_SERVER['REQUEST_URI'];
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '隱瞞';
$IP = isset($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"]. ' (透過代理)' : $_SERVER["REMOTE_ADDR"];
$way = isset($_POST['w']) ? '手動操作' : '未經評論表格';
$spamcom = isset($_POST['comment']) ? $_POST['comment'] : null;
$_POST['spam_confirmed'] = "請求: ". $request. "\n來路: ". $referer. "\nIP: ". $IP. "\n方式: ". $way. "\n內容: ". $spamcom. "\n -- 記錄成功 --";
}
}
//處理
function sink( $comment ) {
if ( !empty($_POST['spam_confirmed']) ) {
if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment; //不管 Trackbacks/Pingbacks
//方法一: 直接擋掉, 將 die(); 前面兩斜線刪除即可.
//die();
//方法二: 標記為 spam, 留在資料庫檢查是否誤判.
add_filter('pre_comment_approved', create_function('', 'return "spam";'));
$comment['comment_content'] = "[ 小牆判斷這是Spam! ]\n". $_POST['spam_confirmed'];
}
return $comment;
}
}
$anti_spam = new anti_spam();
// -- END ----------------------------------------
另外,我们可以看到很多 Spam 都是直接向 wp-comments-post.php 发出请求。
由于我使用了 Willin 大师的 Ajax comments,所以也可以把 wp-comments-post.php 给重命名了,这基本上阻挡了所有的机器 Spammer,不过没有 Spammer的日子也寂寞,哈哈。
Spam To Blacklist 插件,对抗人肉 Spam 的利器
这是来自 jiucool 同学的原创插件。
Spam To Blacklist 这个插件的作用是,在用户手动标记为垃圾评论时,自动将其 Email 和 URL 添加到评论黑名单。
小墙在对付机器 Spam 之类的无比强大,但并不是采用像 Akismet 那种黑名单机制,人肉的 Spammer 容易漏网。
这个Spam To Blacklist 刚好能补充这方便的不足,人肉对抗人肉,插件是把操作给简化了。
消灭那些 xx Seo,xx推广,xx网站 – -。
为了更新方便,请移步到 Spam To Blacklist 的主页下载。
下载插件后,解压完成将其上传至 /wp-content/plugins/ 目录,然后启用之即可,无需其他操作!
这就是我目前的反垃圾评论方案,你的呢?欢迎分享经验^ ^
» 转载请以超链接形式注明来源:A.shun Blog » 《反垃圾评论:WP Anti Spam + Spam To Blacklist》
» 本文链接地址:http://www.a-shun.com/archives/21377.html




小墙是个好东西,一直很感激Willin 大师。
@Vicia 后面的插件可以一试;暂时人肉的Spam不是很多,还可以忍受。
Akismet打死也不会再用,心理阴影了。= =
没有Spammer你也会寂寞…
比起wp我更讨厌最近gmail里的spam…
@Vicia Akismet有什么问题吗?
@流年 误杀。
@Vicia 我对人肉的太反感了,一定要放黑名单
很早就用过,但是后来和主题有点冲突,还在找毛病
@winy 这就太囧了
人肉对人肉,嘎嘎
@久酷 只能这样了,人肉靠程序来判断不容易
哈哈,我这点子不错吧,jiucool V5,willin V5
@zwwooooo V5!!!
人肉对人肉~~~
willin大师造福了很多人啊
请求,来路是1.81才有的么,我用的1.8
@Dianso 对。
深深受益中
最近一直都是广告留言,试过几个插件都不行,现在我还是开着审核的,我也换这个用用
ps,我换个邮箱填了
小墙和我用的主题参数冲突,我有不知道是哪个参数,悲剧啊…
Akismet还不错,就是有时误判
@婉秋 恩,误判比较烦
有句话说得对,没有SPAM也挺寂寞
我博客的Spam基本是全字母的,用Input Some Chinese,挺好。
@Hailo 有时候手累,表情党就杯具了
第二次看这段代码,大概理解了工作方式,把原来name=”comment”的输入框隐藏再加上一个name=”w”的输入框,如果w有内容而comment没内容就说明不是spam(人肉的不能检测),一般软件是直接向comment发送信息
@fatkun 恩,很管用
我用的小蜜蜂和小墙是一个原理
好东西啊,垃圾评论真是件头痛的事情
我启动spam_to_blacklist插件的时候总是报错,奇怪啊
@小小 会不会是wp的版本过低,或者是和其他插件冲突了?
现在一直只用小墙
装上去试试 看来垃圾评论很多。
我还是用自带的,现在评论已经不多了,spam却越来越多。
@小O 哈,spam不及时清除,很影响体验的
对于访量不大的个人博客来说~垃圾评论简直就是奢侈啊~哈哈~
@爱月 还是很多的,机器spam不管你的访问量,很多都是根据网址段群发的
我看到强大的评论数量了`
我的小站…暂时无需用到这种大型杀伤武器~~
不过我是比较不喜欢用验证码之类的~
@Bee君 其实这种算是很环保了,小墙免插件的成本已经很低
以前经常有大量的垃圾评论,现在一天也就几条,习惯了,要是一条没有,还真没习惯,呵呵。
PS:为啥人肉就会填那个隐藏的文本框呢?
@世纪之光 人肉当然不填了,好像有另外的规则对付人肉,不过效果一般。
所以用下面的辅助
自从在A5发文章,一个多星期了,同一个人天天发,我估计是他们有专门的软件吧。
@西门 恩,人肉的太累,应该是群发的,那种好对付
垃圾邮件无处不在,碰到会让你遍体鳞伤
目前spam不多,还可以处理得过来,如果人肉的评论和内容相关我还是会手下留情的,推广不容易 呵呵。
这个插件相当于设个陷阱给机器人跳~
@merror 推广不是这么推的~
很好的人肉对抗人肉插件,之前在Z叔叔那边也看到类似的插件~
@Lazyyyyyy 就是这个嘛
这个插件也很强大
我一直用的是系统自带的反垃圾.
我用Akismet
暂时还是用着akismet,还够用……
@小雪 ak真是流行呢
其实我想问下有没有根据URL来spam的插件,一般发广告的都带url。
@BoKeam 更加url来spam- -
有时候访客也会发url的吧。
而且这个功能wp自带了的,在设置>讨论里面:当一条评论有x个或更多超链接时放入等待审核队列。
先用着Akismet
Willin大师的小墙也看过,以后考虑用不用
原来我在哪里好像看到过小墙,当时就用了,到现在无一错判,非常好用!
Akismet我用着不错,人肉spanner倒是经常没抓到,误判倒没发现,估计是我留言数量太少了吧
已经在wordpress啦和某位博主的留言里介绍了,刚好有不少朋友被这个困扰
@天毅 哈,很多人都受到spam的困扰呢,必须消灭之
现在没用这上了
主要是人肉的比较难对付~
试试先~
看样子很不错呀。收下了。