不少博易用户反映近期被潮水般的垃圾评论所困扰,事实上今年以来我就发现垃圾评论越来越多。尽管博易具有反垃圾评论机制,但需要进行规则配置,而垃圾评论机器人不断升级,博易的反垃圾评论规则配置起来就不那么好用了。
分析这些垃圾评论的来源,很容易得知垃圾评论的发送者来自国外(因为几乎全部为英文)。这是由于今年以来,BlogEngine的快速发展,而被有利可图的垃圾评论制造者盯上了。而博易在对BlogEngine英文版进行本地化后对“original powered by BlogEngine.NET.”版权字样进行了保留,这样将BlogEngine的垃圾评论机器吸引了过来。魔高一尺道高一丈,用简单的方法即可将99%的此类垃圾评论拒之门外,原理很简单,在评论被添加进来的时候对其进行分析,如果评论中连一个中文字符都没有,则认为是垃圾评论,第一时间将其删除。
以插件方式实现,源码如下:
[code:c#]
using System;
using System.Web;
using BlogEngine.Core.Web.Controls;
using BlogEngine.Core;
using System.Net.Mail;
using System.Threading;
using System.Text.RegularExpressions;
[Extension("移除英文垃圾评论", "1.0", "<a href="http://www.blogyi.net">BlogYi.NET</a>", 900)]
public class RemoveEnglishSpam
{
/// <summary>
/// Hooks up an event handler to the Post.CommentAdded event.
/// </summary>
static RemoveEnglishSpam()
{
Post.CommentAdded += new EventHandler<EventArgs>(Post_CommentAdded);
}
private static void Post_CommentAdded(object sender, EventArgs e)
{
Comment cmt = (Comment)sender;
Post pst = (Post)(cmt.Parent);
if (Regex.Matches(cmt.Content, @"[u4e00-u9fa5]").Count == 0)
{
pst.RemoveComment(cmt);
pst.Save();
}
}
}
[/code]
压缩包下载 RemoveEnglishSpam.zip (623.00 bytes),将插件包中 RemoveEnglishSpam.cs 文件复制到 App_CodeExtensions 目录下,在控制面板里面的插件管理启用即可。