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/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

升级新版 Google AdSense 代码提升广告效果

2021年7月19日,Google AdSense 最近发布了新版 AdSense 代码。通过新版 AdSense 代码,AdSense 可以更早触发优化功能,从而提升网站上广告效果。新广告代码适用于自动广告和广告单元。 如何获取 Google AdSense 新版代码? 无需采取任何措施。在下次登录 AdSense 后,您将拥有对新广告代码的访…

利用 Google Analytics 追踪 WordPress 站内搜索关键词

Google分析(Google Analytics)是一个由 Google 所提供的网站流量统计服务。Google 分析(Analytics)现在是互联网上使用最广泛的网络分析服务。 利用 Google Analytics 追踪 WordPress 站内搜索关键词 优化内容 如果网站/博客在 Google Analytics 流量统计,利用 Google Analytics 追踪 W…

Google Analytics 异步请求(服务端请求)

感谢伟大的祖国,使得好好的 Google,必须折腾一番才能好好的用起来。Google 搜索如此,Google Analytics 肯定也不例外(网上据说 Google Analytics 没有被屏蔽)。 Google Analytics 支持服务端发送统计信息(via:Jerry Qu),而通过服务端统计可以解决 Google Analytics 连接缓慢问题,提高页面…
浏览: 104 标签:  ,  , 

Gravatar 头像被墙及解决方案 Gravatar 头像国内镜像地址大全

Gravatar 头像真是一言难尽,时而正常时而抽风时而无法访问……就一个 Gravatar 头像,这有啥好强(现代通假字)的呢?(据说是被其它服务连累?) 解决办法 - 调用 ssl/cn 头像链接 历史解决办法:调用 ssl 头像链接——https还是没被墙的,而且速度还不错,直接调用这个最简单了。主题 functi…
浏览: 115 标签:  , 
浏览: 112 标签:  , 

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楼
    • @zwwooooo 这样已经能防住绝大部分垃圾评论了吧……

      2016.08.18 11:24 # 回复
      • @老杨 对的,机器的全部搞定

        2016.08.18 11:54 # 回复
        • @zwwooooo 在手机APP上管理 wordpress 进行评论回复,willin的小墙会阻挡进行的评论回复,因为这个改用插件了。。

          2016.08.21 00:06 # 回复
  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信息