WordPress 如何有效应对垃圾评论?

网上介绍的方法好多,有换成第三方评论的(如Disqus、多说),有加验证码的,插件(Akismet、NoSpamNX、WP Anti Spam、JQ Spam……)、直接禁止无中文或者有日文的评论、直接禁止无头像的评论者提交评论、ajax 提交评论+删除 wp-post-comment.php 文件……八仙过海各显神通。

下面列几个效果还不错的方法:

方法一:对 .htaccess 下手(Apache)

1、V2EX @Mihuwa 18楼提供据说是 WordPress 官网的做法——对 .htaccess 下手,针对的是采用 POST 提交评论的方式,据说还能防暴力破解后台

# Stop spam attack logins and comments
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login).php*
RewriteCond %{HTTP_REFERER} !.*example.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
</ifModule>

如果是 Nginx 使用下面的代码:

location ~* (wp-comments-posts|wp-login).php$ {
if ($http_referer !~ ^(http://example.com) ) {
return 405;
}
}

注意把 example.com 换成自己的域名!!!


2、加强版,直接禁止访问 wp-post-comment.php 文件(前提是已经开启 ajax 提交评论,否则谁也提交不了评论):

<Files wp-comments-post.php>
Require all denied
</Files>

代码丢到 .htaccess 里面 WordPress 伪静态代码前即可。

nginx 使用下面代码:

location =/wp-comments-post.php { deny all;}

方法二:拦截新访客无中文或有日文垃圾评论、禁止在黑名单上的新访客提交评论

代码合集见:无需插件实现拦截无中文或有日文垃圾评论 文末,这个效果一般,对 POST 方式的垃圾评论无效,主要是防部分人肉的垃圾评论。

代码收集自网络,部分出处不知道是哪个了。直接拒绝 WordPress 黑名单评论的发表 源自 小蝴蝶

方法三:ajax 提交评论+删除/清空 wp-post-comment.php 文件

ajax 提交评论可看大发的教程:WordPress Ajax 评论提交,这种方法原理和第一种方法一样,主要是防止机器人用 POST 方式通过 wp-post-comment.php 提交评论。

方法四:彻底禁止所有文章和页面的 pingback 和 trackback

这个方法只对 pingback 和 trackback 有效,并且是正常的也拦截了。phpMyAdmin 执行以下 MySQL 语句(注意数据表前缀)

UPDATE wp_posts SET ping_status='closed' WHERE post_status = 'publish' AND post_type = 'post';
UPDATE wp_posts SET ping_status='closed' WHERE post_status = 'publish' AND post_type = 'page';

方法五:通过 Javascript 抓取使用脚本自动填写提交的评论(垃圾评论)

方法为 Leona+ 博主原创:屏蔽来自网页端的垃圾评论,详细介绍请看原文。下面是转贴代码:

Leona+ 原版:(不支持 pingback/trackback)▼展开

$leonax_magic_lower = 328;
$leonax_magic_upper = 3450709;
function leonax_anti_spam_form($fields){
global $leonax_magic_lower, $leonax_magic_upper;
$leonax_magic = mt_rand($leonax_magic_lower, $leonax_magic_upper);
$fields['leonax_magic'] = <<<EOT
<input type="hidden" id="leonax-magic" name="leonax-magic" value="0">
<script type="text/javascript">
jQuery(function() {
jQuery("#comment").on("keyup", function() {
jQuery("#leonax-magic").val("$leonax_magic");
});
})
</script>
EOT;
return $fields;
}
add_filter('comment_form_default_fields', 'leonax_anti_spam_form');

function leonax_anit_spam_caught() {
wp_die('<strong>ERROR</strong>: Looks like you are a spam bot. Please stop doing this.');
}

function leonax_anti_spam_check( $commentdata ) {
global $leonax_magic_lower, $leonax_magic_upper;
if ( isset($commentdata['user_ID']) && $commentdata['user_ID'] ) {
return $commentdata;
}
if ( !isset($_POST['leonax-magic']) ) {
leonax_anit_spam_caught();
}
$magic = intval($_POST['leonax-magic']);
if ($magic < $leonax_magic_lower || $magic > $leonax_magic_upper) {
leonax_anit_spam_caught();
}
return $commentdata;
}
add_filter( 'preprocess_comment' , 'leonax_anti_spam_check' );

赖博士增强版(支持 pingback/trackback 又可以屏蔽垃圾代码)▼展开

$leonax_magic_lower = 328;
$leonax_magic_upper = 3450709;

function leonax_anti_spam_form($fields){
global $leonax_magic_lower, $leonax_magic_upper;
$leonax_magic = mt_rand($leonax_magic_lower, $leonax_magic_upper);
$fields['leonax_magic'] = <<<EOT
<input type="hidden" id="leonax-magic" name="leonax-magic" value="0">
<script type="text/javascript">
jQuery(function() {
jQuery("#comment").on("keyup", function() {
jQuery("#leonax-magic").val("$leonax_magic");
});
})
</script>
EOT;
return $fields;
}

add_filter('comment_form_default_fields', 'leonax_anti_spam_form');

function leonax_anit_spam_caught() {
wp_die('<strong>ERROR</strong>: Looks like you are a spam bot. Please stop doing this.');
}

function leonax_anti_spam_check( $commentdata ) {
// ---以下为修改的----
$comment_type = '';
if ( isset($commentdata['comment_type']) ) {
$comment_type = trim($commentdata['comment_type']);
}

if ( ($comment_type == 'pingback') || ($comment_type == 'trackback') ) {
return $commentdata;
}
$content = '';
if ( isset($commentdata['comment_content']) ) {
$content = trim($commentdata['comment_content']);
}
if (!strlen($content)) {
leonax_anit_spam_caught();
}

if (preg_match("/[a-e0-9]{25,}/i", $content)) { // 人为测试捕捉 上图奇怪的ID
leonax_anit_spam_caught();
}

// ---修改结束---------
global $leonax_magic_lower, $leonax_magic_upper;

if ( isset($commentdata['user_ID']) && $commentdata['user_ID'] ) { // 登陆用户允许
return $commentdata;
}

if ( !isset($_POST['leonax-magic']) ) {
leonax_anit_spam_caught();
}
$magic = intval($_POST['leonax-magic']);
if ($magic < $leonax_magic_lower || $magic > $leonax_magic_upper) {
leonax_anit_spam_caught();
}
return $commentdata;
}

add_filter( 'preprocess_comment' , 'leonax_anti_spam_check' );

目前在用的方法:ajax 提交评论、直接禁止访问 wp-post-comment.php 文件、禁止在黑名单上的新访客提交评论、禁止新访客提交无中文或者有日文的评论以及第五种方法——Leona+ 的通过 Javascript 抓取使用脚本自动填写提交的评论(垃圾评论)。效果还行,偶尔能看到一些也许是人肉发送的垃圾评论。当然了,我这里本身访问量就很少,评论也少……

除非注明,沙唐桔文章均为原创,本文地址 https://cyhour.com/137/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!

群晖使用 rsync 本地文件夹间增量复制文件备份

Google 相册自动备份到 OneDrive,蜗牛星际安装了群晖,Cloud Sync 把 OneDrive 备份同步到本地。蜗牛星际群晖 NAS 用了4块监控录像机拆下来的垃圾盘,目前检测状态良好,不过不知道什么时候会挂,加上也没有做 raid,复制多一份稳点。 群晖官方貌似没有套件可以直接实现本地文件夹间增量复制文件…
浏览: 88 标签:  ,  ,  ,  ,  , 

TM-AC1900 3199 版本固件刷回 AC68U 支持 AiMesh

2016 年双十一淘宝买的水货华硕 RT-AC68U还在服役,折腾过双拨、刷过梅林……前阵子直接从梅林刷回原版。也是因为这个,大意了,中午登陆路由器看到有更新,于是点更新…… TM-AC1900 改的 AC68U 千万不要后台直接升级固件~ TM-AC1900 改的 AC68U 后台在线升级固件,直接悲剧了,三分钟、三分钟、三…
浏览: 134 标签:  ,  ,  , 

优酷路由宝 YK-L1 刷 Breed 和老毛子 Padavan 作无线打印服务器

前些天¥28收了一个极壹S(HC5661A),加USB刷Breed+老毛子作无线打印服务器用,挺好的。逛转转,看到一个优酷路由宝挺便宜的,¥30包邮到手,卖家说没有拆机,这么说自带的 8G TF 卡还在,还挺划算的,就买回来了。 两年前,就买过两个路由宝,那时候可以利用空闲宽带挖金币,基本上回本。后来又…
浏览: 119 标签:  ,  ,  ,  , 

Gridea,一个静态博客写作客户端(GUI 版 Hugo)

前几天折腾 Hugo,上手不难,建了个几乎零成本垃圾站,真香!Hugo 本地环境搭建比 Jekyll 简单,而 Gridea 比 Hugo 更简单,甚至,从功能上来说,Gridea 就是 Hugo GUI 版。 Gridea 简介 Gridea,一个静态博客写作客户端,小白也可以 GitHub Pages 搭建静态博客。开源、易用、强大。记录生…
浏览: 151 标签:  ,  ,  ,  ,  ,  ,  , 
浏览: 55 标签:  , 

Comments:26

  1. 沙唐桔-灰狼
    灰狼

    我用的是屏蔽IP,一了百了。

    2016.08.17 16:49 # 回复
    1楼
  2. 我通过3层判断的ai来阻止,已经几年没见过垃圾评论

    2016.08.17 22:57 # 回复
    2楼
    • @kn007 你这个有点高大上了,我都没看懂是啥呢…

      2016.08.17 23:07 # 回复
      • @老杨 其实看一下我评论框就知道了。小墙(伪造框)+头像判断+nonce判断(原理跟leonax差不多,但是每日每篇文章的nonce有唯一性,wp自动生成)+黑白名单。我ajax传送评论的时候,php会判断这些,包括黑白名单判断。判断完再交给Wordpress。

        2016.08.17 23:16 # 回复
  3. 只用了willin的小墙 + 删了wp-comments-post.php

    2016.08.18 11:17 # 回复
    3楼
  4. 我是插件一键搞定 懒得配置了

    2016.08.19 00:31 # 回复
    4楼
  5. 那只能说明太受欢迎了

    2016.08.19 16:53 # 回复
    5楼
  6. 我一个验证码,就基本全部搞定了。

    2016.08.20 02:55 # 回复
    6楼
  7. 沙唐桔-nyun
    nyun

    我采用的第三种方法,话说非常羡慕你的评论系统样式,看来我又有的折腾了~

    2016.08.21 22:12 # 回复
    7楼
    • @nyun 评论缩进控制我用了这样的代码:

      <?php if( $depth > 2){ echo ' style="margin-left:0;padding-left:0;"';} ?>

      参考一下吧,根据你主题输出评论去修改,0 也是根据你的缩进去修改。

      2016.08.21 23:11 # 回复

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息