自言自语

I'm Wang Xianyuan, writing for myself, more studying, more experience…

BlogEngine(博易)垃圾评论简单过滤插件

By

不少博易用户反映近期被潮水般的垃圾评论所困扰,事实上今年以来我就发现垃圾评论越来越多。尽管博易具有反垃圾评论机制,但需要进行规则配置,而垃圾评论机器人不断升级,博易的反垃圾评论规则配置起来就不那么好用了。

分析这些垃圾评论的来源,很容易得知垃圾评论的发送者来自国外(因为几乎全部为英文)。这是由于今年以来,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 目录下,在控制面板里面的插件管理启用即可。

3 Comments

  1. December 29, 2010 at 10:23 am

    我也使用了这个博客,就是http://v8800.com这是我的小站,不过我打算自己写一个博客程序出来!用别人的有诸多不便!:p

  2. March 5, 2011 at 2:14 pm

    我自己的站也想加个博客模板考虑中…..哈哈…

  3. April 22, 2011 at 10:18 am

    不知道这种的有什么好处没有啊。比起wp怎么样啊