2009年7月4日星期六

Z-Blog垃圾留言判定新方法

  现在的垃圾留言越来越智能,并且从留言内容几乎看不出来是垃圾留言,而大量的垃圾留言会导致文章可读性下降,并可能会被搜索引擎惩罚,经过一段时间的分析和思考,我发现一种判定垃圾留言的新方法,可以从一定程度提高垃圾留言的识别率。

  这种新方法是基于对留言者姓名的过滤,为了实现垃圾留言的功效,这类留言者的姓名通常具有一定的规律,比如姓名为“起重机”、“虚拟主机”、“代开发票”等用户的留言,几乎百分之百为垃圾留言,通过总结这类姓名的特点,并对其进行过滤,就可以提高识别垃圾留言的准确率。

  将下面几行代码加入到月光Z-Blog反垃圾留言过滤插件的Antispam_chkComment函数中,就可以实现增强型的垃圾留言识别,对于有垃圾留言倾向的评论,会自动转到留言审核界面,审核完成后留言才会显示。其中strFilter中是我总结的一些常见的垃圾留言特征字符串。

 Dim i
 Dim strAuthor
 Dim strFilter
 Dim strFilterWord
 strFilterWord= "电影,影院,影视,魔兽,英语,网站,电脑,地图,租房,论坛,营销,社区,nba,qq,seo,在线,赚钱,手机,聊天,兼职"
 strAuthor = objComment.Author
 strFilter = Split(strFilterWord, ",")
 For i = 0 To UBound(strFilter)
  If InStr (strAuthor, strFilter(i)) > 0 Then
   objComment.log_ID=-1-objComment.log_ID
   If objComment.Post Then
   End if
   If IsEmpty(Request.Form("inpAjax"))=False Then
    objComment.Content="您的评论因被怀疑为 Spam 而进入审核过程,请勿再次提交。"
    Call ReturnAjaxComment(objComment)
    Response.End
   End If
   Call ExitError("您的评论因被怀疑为 Spam 而进入审核过程,请勿再次提交。")
  End If
 Next

  另外,使用一些SQL语句也可查询出疑似留言,具体使用方法是,使用Access打开MDB数据库,点击数据库窗口左侧的查询,然后点新建,选择向导或设计视图,然后再视图菜单中选择“SQL视图”,就可以执行自己写好的SQL语句,下面是一些常用的SQL语句。


  按数量查看留言者留言频率

select comm_homepage,count(*) from blog_Comment group by comm_homepage having count(*)>10 order by count(*) desc

  留言网站你地址为单个网页的留言(通常只有SEO会这么干)

select * from blog_Comment where comm_homepage like '*.htm*'

  留言内容包含UBB的链接

select * from blog_Comment where comm_content like '*url*'