海纳百川

登录 | 登录并检查站内短信 | 个人设置 网站首页 |  论坛首页 |  博客 |  搜索 |  收藏夹 |  帮助 |  团队  | 注册  | RSS
主题: 元旦书红,世界大同
回复主题   printer-friendly view    海纳百川首页 -> 驴鸣镇
阅读上一个主题 :: 阅读下一个主题  
作者 元旦书红,世界大同   
所跟贴 老芦保重。附一篇反发帖机的文章,大家看看有没有帮助。 -- 列那 - (1853 Byte) 2014-1-04 周六, 上午10:47 (189 reads)
列那






加入时间: 2004/02/15
文章: 127

经验值: 2354


文章标题: 如何防止网站垃圾留言评论的肆略 (172 reads)      时间: 2014-1-04 周六, 上午10:50

作者:列那驴鸣镇 发贴, 来自 http://www.hjclub.org

正 文:
可能很多自称是SEO高手的“专家”们都有一个同样的“法宝”,那就是疯狂地在其他网站上留下大量的垃圾留言,垃圾评论,以便留下他们的链接。或许这在很久以前可能有用,随着SE的反SPAM的技术不断的升级,现在再这样做简直是自找死路,无疑是给SE一个惩罚你的理由。

然而,这些高手们依然不知疲倦乐在其中,或机器自动留言,或人肉留言,总之,只要是可以留下一个链接的地方都留下了他们坚强的身影,他们才不管你的网站是什么类型的,走过路过都要进去评论一下。鉴于垃圾猛于虎的严峻形势,飘易博客甚至不得不将评论设置为需要审核才能显示。

当然,我们也不是完全反对留言评论,WEB2.0需要网站和用户的互动,但要留言至少也要看下别人的文章,有感而发嘛,这是非常正常的交流沟通方式,我们非常欢迎这样的留言和评论。

当然,我们需要反击,针对机器每秒几十几百的信息发布量,我们也要从技术手段上屏蔽它们。如何具体操作呢?flymorn提供几个可行有效的方法。

1、判断该发布信息是否有可靠的来路。只要是自然人发布的,那么他一定是通过我们提供给用户的提交页过来的,一定有一个来路;如果是机器发布的,就不会有来路信息。

'判断来路,禁止外部提交
dim server_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if server_v1="" or instr(server_v1,"/add.asp")<=0 or mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<SCRIPT>alert('来源非法,禁止外部提交!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

注意,上面的/add.asp就是提交页面来源页。当然,机器也可以伪造来路,这就要结合以下方式一起对付了。

2、验证码。验证码一直是对付机器垃圾留言的一个可行的方法。不同的验证码有不同的对付机器留言的能力,越复杂的验证码,机器越难破解。这需要在考虑用户的感受和对付机器之间选择一个平衡点。关于验证码的使用方法,我就不多说了,谷歌、百度里搜索下就会出现很多介绍。

3、判断来源提交的时间。如果在提交页停留的时间太短,比如20秒,一般只要是个人,他打字的时间都不必这个少。举例说明,在用户打开页面(如add.asp)的时候,我们记下这个时间,在form提交表单里增加一个隐藏对象,如:
<input>

然后,当用户写好留言评论后提交到具体处理页面(如addok.asp)的时候,我们获取当前时间,和add.asp里的这个intime1时间比较,如果这个时间差小于设定的时间,如20秒,则禁止留言,判断为机器。代码可这样写:
If DateDiff("s",request.form("intime1"), Now()) < 20 then
response.write "<SCRIPT>alert('您的留言速度太快了吧,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

通过以上三种方法可以屏蔽掉绝大部分的机器垃圾留言评论,如果还有大量的留言的话,那多半是人肉留言了。但是,我们又如何对付人肉留言呢?flymorn也提供方法对付。

方法很简单,就是通过记录用户的cookies以及IP来限制同一用户发表留言的数量。比如一天24小时内,只允许同一用户发表信息5条。我们可以通过以下方法实现。

<if> 5 then
response.write "<SCRIPT>alert('今天留言次数超过限制,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
%>

通过以上的限制,人工发帖也得到了一定的限制。上面的方法是基于cookies判断,当然用户可以通过浏览器清空COOKIES,但这样增加了他们发垃圾帖子的难度,提高了门槛。我们还可以继续判断发布者的IP,通过同一个IP下发帖限制数量来达到我们的目的。在此,就不再扩展,大家可以自己设计如何判断IP来限制发帖的方法。如果您对本文讨论的主题有看法或建议,欢迎留下评论,以便我们一起探讨。


作者:列那驴鸣镇 发贴, 来自 http://www.hjclub.org
返回顶端
阅读会员资料 列那离线  发送站内短信
显示文章:     
回复主题   printer-friendly view    海纳百川首页 -> 驴鸣镇 所有的时间均为 北京时间


 
论坛转跳:   
不能在本论坛发表新主题
不能在本论坛回复主题
不能在本论坛编辑自己的文章
不能在本论坛删除自己的文章
不能在本论坛发表投票
不能在这个论坛添加附件
可以在这个论坛下载文件


based on phpbb, All rights reserved.
[ Page generation time: 0.084092 seconds ] :: [ 28 queries excuted ] :: [ GZIP compression enabled ]