最近一段时间,博客上出现大量的垃圾评论,平均每天有2万左右,最多一次甚至有4万6千多条,着实让人有些心烦。

通过IP,发现绝大部分的垃圾评论都来自“福建省莆田市”。并且通过搜索,发现遇到此类的问题的人还不少,不只是博客,很多论坛也时有发生。

针对此,最简洁有效(傻瓜式)的办法,就是屏蔽该地区的IP,方法比较简单,就是有点繁琐。

修改Wordpress根目录下的.htaccess文件,并将需要屏蔽的IP地址或网段,按照以下格式填进去。

Order Deny,Allow
deny from 27.153
deny from 27.153.128
deny from 27.153.128.128
Allow from All

说明:在Deny from后面写上你要屏蔽的IP地址。
例如:27.153代表27.153开始的所有网段,27.153.128同理。27.153.128.128,代表屏蔽某一个IP。当然,有条件的可以通过查询IP库,来判断是否是该地区的IP,从而阻止其评论。

另外,虽然屏蔽了很多来自莆田市的IP,但你会发现还有很多来自国外和其他地区的垃圾评论,虽然平时也有,只不过由于这次的事情,导致把这些垃圾评论也给“放大化”了。既然已经在处理,索性就更加彻底的巩固下。
打开主题模板中的function.php,将以下代码黏贴进去。

// 评论过滤:
function scp_comment_post( $incoming_comment ) {
	$pattern = '/[一-龥]/u';
	$pattern_japan ='/[あ-んア-ン]/u';
	$pattern_link = '/http:\/\//is';

	if( !preg_match($pattern, $incoming_comment['comment_content']) ){
		wp_die( "Oops! You should type some Chinese word (like \"你好\") in your comment to pass the spam-check, thanks for your patience. 您的评论中必须包含汉字" );
	}else if( preg_match($pattern_japan, $incoming_comment['comment_content']) ){
		wp_die( "中国語を使用してください。不支持日文,并检查是否包含特殊字符。" );
	}else if( preg_match_all($pattern_link, $incoming_comment['comment_content'] , $aa) >1) {
		wp_die( "评论中禁止出现2个及2个以上的网址或链接" );
	}
	return( $incoming_comment );
}
add_filter('preprocess_comment', 'scp_comment_post');

作用:
1. 禁止全英文评论,必须含有中文。
2. 禁止日文评论。
3. 禁止评论中出现2个或2个以上的链接。

至此,大部分的垃圾评论应该都能阻止了。