WordPress 代码屏蔽垃圾评论方法(禁止全英文/中文字符占比/评论过滤)

一天居然有 200 多条英文评论。基本是垃圾评论灌水,打广告,特别是国外的。当然你也可以使用插件去实现屏蔽垃圾留言评论,比如 WordPress 官网推荐的 Akismet 插件。下面是以代码的形式屏蔽垃圾评论(禁止全英文/中文字符占比/评论过滤)。打开 function.php 文件,根据需要添加下面的内容:

//防灌水
function scp_comment_post( $incoming_comment ) {

// 禁止全英文评论
$pattern = '/[\x7f-\xff]/';
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
wp_die( "您的评论中必须包含汉字! <br /> You should type some Chinese word (like \"你好\") in your comment to pass the spam-check, thanks for your patience! " );
}
//禁止 A 链接
if(strstr($incoming_comment['comment_content'], "<a")){
wp_die( "您的评论中不能有A链接,请直接填写URL地址" );

}
// 判断 中文字符占比
$len_all = strlen($incoming_comment['comment_content']); 
$len_st = mb_strlen($incoming_comment['comment_content'], 'UTF-8');
if(($len_all-$len_st)/(2*$len_st) < 0.5){
wp_die( "中文字符少于百分之五十" );
}

// 禁止日文评论
if(preg_match($pattern, $incoming_comment['comment_content'])) {
wp_die( "禁止日文评论!日本のコメントを禁止!" );
}

return( $incoming_comment );
}
add_filter('preprocess_comment', 'scp_comment_post');

另外还可以根据评论黑名单中的关键词来直接阻止评论,这样垃圾评论就不会写入数据库了。

在WordPress后台“设置” > “讨论” > 评论黑名单中添加相应的垃圾评论关键词即可。如在黑名单中添加“信用卡”,那么当评论的内容、评论者名称、URL、电子邮件或IP地址中包含其中任何关键字(如信用卡)时,系统将会禁止提交到数据库。

//屏蔽关键词,email,url,ip
function Shield_fuckspam($comment) {
    if (wp_blacklist_check($comment['comment_author'], $comment['comment_author_email'], $comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'])) {
        header("Content-type: text/html; charset=utf-8");
        err(__('不好意思,您的评论违反评论规则'));
    } else {
        return $comment;
    }
}
add_filter('preprocess_comment', 'Shield_fuckspam');

代码解析:

$pattern的值是正则表达式,前者是汉字编码范围,后者是日文编码范围,也就是评论必须包含中文,并且不能包含日文,否则拒绝提交。

以上的代码采用wp_die输出错误信息!如果贵站使用comments-ajax.php处理提交,请将wp_die换成err!否则会出现500错误!

屏蔽机器人垃圾评论:

function antiEmptyUA(){
    //获取UA信息
$ua = $_SERVER['HTTP_USER_AGENT'];
//将恶意USER_AGENT存入数组
$now_ua = array('FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','YisouSpider','jikeSpider','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');//禁止空USER_AGENT,dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT
if(!$ua) {
header("Content-type: text/html; charset=utf-8");
wp_die('机器人,滚粗!');
}else{
foreach($now_ua as $value )
//判断是否是数组中存在的UA
if(eregi($value,$ua)) {
header("Content-type: text/html; charset=utf-8");
wp_die('机器人,滚粗!');
}
}
}

防止访问者或机器人恶意频繁刷新、大流量访问:

function antiEmptyUA(){
 //获取UA信息
$ua = $_SERVER['HTTP_USER_AGENT'];
//将恶意USER_AGENT存入数组
$now_ua = array('FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','YisouSpider','jikeSpider','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');//禁止空USER_AGENT,dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT
if(!$ua) {
header("Content-type: text/html; charset=utf-8");
wp_die('请勿采集本站!');
}else{
 foreach($now_ua as $value )
//判断是否是数组中存在的UA
 if(eregi($value,$ua)) {
 header("Content-type: text/html; charset=utf-8");
 wp_die('请勿采集本站!');
 }
}
}

以上代码中function anticc($time_sep)的“$time_sep”是控制$time_sep秒中内允许用户访问一次,比如$time_sep=3时,如果用户在3秒内访问超过一次,系统则会提示“警告:请求过于频繁”,并且只有等待三秒后才能访问本网站。

利用Htaccess屏蔽机器人垃圾评论:

# BEGIN 屏蔽垃圾留言:屏蔽空referrer留言
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*wangbaiyuan.cn.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>
# END 屏蔽垃圾留言:屏蔽空referrer留言

© 文章系本站作者 飞牛 原创发布于「飞牛士 FeiNews」,文章授权后方可转载,请勿侵权!

(0)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(2条)