最近使用了博易的开源博客,其内核是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
博客不错啊,学习ing,我的站是关于钻石介绍的,欢迎回访。
文件下载不了。
死链已经修复,现在可以下载了。谢谢关注。