如何屏蔽BlogEngine.net的垃圾评论

最近使用了博易的开源博客,其内核是BlogEngine.net,但是由于汉化后的博易博客仍然带有BlogEngine的标志,于是乎一群如同看到腐肉的苍蝇一般的垃圾评论蜂拥而至,实在令人厌烦。

第一次,我在后台手工删除了大概800条左右的垃圾评论,花了我10分钟。。。后来大概事隔一个月。我再次看评论数量后,发现已经有三千多条了,这次是不能在后台用手工删除了,于是找到博易的作者,他给了一个用以屏蔽英文垃圾评论的扩展,安装之后,发现还不错,英文基本上都可以屏蔽掉。下载地址如下:

http://my.blogyi.net/post/blogengine-extension-remove-english-spam.aspx

这个是解决了过滤垃圾留言的问题,可是如何删除已经产生的垃圾留言呢?本人在博易作者提供一个小工具的前提下,进行了进一步开发,做出了一个比较可靠的垃圾评论删除工具。(注:博易作者给的是基于评论是否审核通过的前提下,不过后台有个选项,就是超过多少天,就自动认为评论审核通过,所以这个工具在我这里不起作用。)

其核心代码如下:

    try
    {
        int count = 0;
        List posts = new List();
        List> removedComment = new List>();
        foreach (Post p in Post.Posts)
        {
            lblTaskStatus.Text = "正在处理:" + p.Title;
            List removedCommentTemp = new List();
            foreach (Comment c in p.Comments)
            {
                // do not include trackbacks and pingbacks to comment list
                if (c.Email == "trackback" || c.Email == "pingback") continue;

                if(c.Website!=null && !string.IsNullOrEmpty(c.Website.ToString()))
                {
                    if (Regex.Matches(c.Content, @"[u4e00-u9fa5]").Count == 0)
                    {
                        removedCommentTemp.Add(c);
                    }
                }
            }
            posts.Add(p);
            removedComment.Add(removedCommentTemp);
        }
        for (int i = 0; i < posts.Count; i++)
        {

            foreach (Comment c in removedComment[i])
            {
                posts[i].RemoveComment(c);
            }
        }
    }
    catch(Exception ex)
    {
        this.StatusMsg.Text = ex.ToString();
    }

使用方法:将这两个文件上传至/admin目录下,然后在浏览器中输入/admin/RemoveSpamComment.aspx即可。

下载该垃圾评论删除工具:RemoveSpamComments.zip

blog-engine-反垃圾评论

blog-engine-反垃圾评论

3 条关于 “如何屏蔽BlogEngine.net的垃圾评论” 的评论

发表评论