在互动型网站中常常会受到垃圾贴的困扰。我分享一点个人在垃圾贴处理方面的一点心得:
要处理垃圾贴必然需要分析垃圾贴的特征
1. 在内容上垃圾贴通常会带有一个固定域名的外部链接,或者带有QQ号码,手机号码,或者重复内容;
2. 在发帖频率上有可能是某个用户或者某个IP在短时间内发别多个帖子;
3. 在手段上高级一点的垃圾贴可能用发贴机,可能会使用不同ip,并附带破解验证码的程序。
有了特征,我们看下如何对付垃圾贴
1. 反垃圾贴的最常用的手段就是验证码了
目前大多数网站的反垃圾机制都使用了验证码,验证码可以阻止部分机器发帖,并加大人工垃圾贴的成本。验证码有好坏之分,好的验证码的表现是不易被破解,或者说破解率很低;好的验证码通常是机器不容易识别而人比较容易识别的,通常都会有扭曲或字符的重叠;相反的一个差的验证码是机器容易识别而人不容易识别的,比如说只有噪点而未做扭曲的验证码。
例如下图中的yahoo的验证码是好的验证码,它充分的扭曲,每个字符的扭曲的角度都不一样,而且每个字符之间有粘连。
举个反例,下面的就是不好的验证码,只做的噪点,每个字符都未做其他处理,破解程序很容易取出噪点分析出正确的结果
2. 通过分析发帖内容中的数字或者外网链接地址和规则来判断发帖是否是垃圾贴。我们可以做一个HttpModule来判断用户的每一个post提交,如果用户提交的内容中有外网地址或者数字,则记录下来这个发帖人的用户id,和ip地址,如果该用户在某个可配置的时间段之内重复提交有相同的数字或相同域名的外网地址,则可以认定该用户有发垃圾贴的嫌疑,并将此嫌疑用户发到监视列表,在该用户发表多于5次(可配置次数)包含疑似广告内容时,就可以拒绝该用户再发帖,并记录日志
3. 如果是高质量的论坛,可以通过限制注册,申请注册的方式来做一些限制;或者在新用户发表正常内容超过n篇之后才允许用户直接发帖,在通过n篇认定的好帖之前,新用户所发帖子都默认审核后方可显示。
4. 设置禁用词,对于已经确认为广告的词汇进行封禁。
5. 购买第三方的组件来做分析处理垃圾贴的工作,这个据说很贵,也有效果。
如果以上几种方案都使用了,但是你还是没有制止住垃圾贴,我还有一个杀手锏。通过用户发帖的通过率来控制垃圾贴,即根据一个用户发表内容的通过率来决定他的下一个帖子是否可以显示出来,假定我要求通过率在90%以上的用户发帖默认显示出来,那么一个用户要发一个广告贴的代价就是先发9个正常的帖子,这种情况下垃圾贴基本上就可以被遏制住了。
以上是我个人的一点心得,如果你有更好的方法,请分享。我只写了心得,没有写具体的技术实现,如果哪位有好的技术实现的话欢迎分享。