WordPress文章中突然出现大量英文垃圾评论怎么屏蔽-大鹏说

WordPress文章中突然出现大量英文垃圾评论怎么屏蔽

夜间模式

各位站长朋友大家好,今天大鹏算是第一次碰见了大量垃圾评论,还都是英文的,真是开了眼界了。
话不多说,垃圾英文评论,先上图为快:

刚开始我以为真有老外,通过谷歌、雅虎、必应这些国外搜索引擎看到我写的文章了,然后他们感兴趣留言。我试着回复了其中一条没被WP后台自动屏蔽的留言,还用的是英文,并且热情满满,毕竟咱博客刚开始整,流量本来就少,见个评论跟看到金元宝似的。晚上回到家,打开电脑一看后台,情况不对呀,垃圾箱里躺着七八条评论,也都是英文的。

我仔细看了看这些评论,内容上都是一些八竿子打不着的回复,像什么:
你写的博客很棒,给我启发,
你的文章写得是最好的,我们后期保持沟通,
我们是志愿者组织的,看到你的博客很高兴,等等这类的话,把我也搞蒙了,第一次遇到~

并且这些留言有个共同的特点,就是在前台,他们的评论最前面,都会加一个文本超链接,你点击的话,就会跳转到他的网站。这些网站乌七八糟,什么都有:卖DVD的,卖服务器的,游戏网站,Yellow网站,404打不开页面等等。看到这里,我算是明白了,确定无疑,这些全部是垃圾评论。

那怎么有效屏蔽垃圾英文评论呢?大鹏从网上搜了一部分前辈们的经验,整理了一下,供大家参考:

一、安装插件
1、Some Chinese Please插件可以拦截不带中文字的留言,效果不错,不写入数据库,可有效地减少spam对服务器的无谓使用
2、Wordpress自带的Akismet防垃圾评论插件,默认禁用。启用后要到其网站上注册一下,拿到一个api key才能用。该api key对于个人用户是免费的。
3、Spam Free WordPress插件,这个评分比较高,可以使用看看。
4、Math Comment Spam Protection插件,加了个验证码,让做一道数学题。

这些插件虽然能阻挡一些垃圾评论,但很多时候它们都是被放在垃圾评论里面,也还是要手工删除。刚开始觉得没什么,随着垃圾评论越来越多,不止中文的还有很多的纯英文垃圾评论,有时候一天甚至达到四五百条,删都删的累了,那有没有更加彻底的方法,屏蔽纯英文或其他外语的垃圾评论?我们就需要用到代码了,如下。

“/* refused spam */
function refused_spam_comments( $comment_data )
{  $pattern = '/[一-龥]/u'; 
if(!preg_match($pattern,$comment_data['comment_content']))
 {  wp_die('评论必须含中文!');  } 
return( $comment_data );  } 
add_filter('preprocess_comment','refused_spam_comments');”

二、使用代码
1、过滤全部是英文、日文等外文的垃圾评论,将下面代码加到主题functions.php模板文件中

2、反垃圾评论代码
同样,直接将以下代码加到主题的functions.php文件的最下面,保存即可

“// 垃圾评论拦截

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>",$input);') );
}
}
function gate() {
if ( !emptyempty($_POST['w']) && emptyempty($_POST['comment']) ) {
$_POST['comment'] = $_POST['w'];
} else {
$request = $_SERVER['REQUEST_URI'];
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '隐瞒';
$IP = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_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 ( !emptyempty($_POST['spam_confirmed']) ) {
if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return$comment;
//方法一: 直接挡掉, 將 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();”

代码后面提供了两种对付垃圾评论的办法,一种是直接阻止评论,另一种是将垃圾评论放在Wordpress评论的待审核队列中,默认是第一种,如果你想使用第二种,请给die();加上//,然后去掉“方法二”下面代码的//符号。

3、过滤包含任意日文字符的垃圾评论

“// 阻止日文垃圾评论
function BYMT_comment_jp_post( $incoming_comment ) {
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(preg_match($jpattern, $incoming_comment['comment_content'])){
wp_die( "禁止有日文字符的评论 You should type some Chinese word" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_jp_post');”


三、屏蔽IP地址

对于某些垃圾评论屡禁不止的,复制其IP地址,加入黑名单,彻底打入冷宫
垃圾评论的IP地址可以在后台评论处看到,如图

屏蔽拉黑IP地址,有两种方法

1、可以直接在WordPress后台,把IP地址放到“审核”和“黑名单”框中,如下图

2、也可以通过代码的形式去屏蔽,可以在.htaccess文件中添加如下代码:

“Order Deny,Allow
Deny from xxx.xxx.xxx.xx
Deny from xxx.xxx.xxx.xx”

xxx号处,就是我们需要屏蔽的垃圾IP地址

好啦,基本上到这里,用过上述方法后,我们就可以彻底消灭垃圾评论了。最近,我还会更新一篇关于如何解决网站被它人大量发布英文文章的帖子,大家敬请Ctrl+D持续关注大鹏说博客(dapengshuo.net)~

版权所有丨转载请标注大鹏说(dapengshuo.net)及原文URL:大鹏说 » WordPress文章中突然出现大量英文垃圾评论怎么屏蔽

赞 (1) 支持大鹏


发表我的评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址


赞赏支持大鹏,一起做好运营

支付宝扫一扫打赏

微信扫一扫打赏