所谓魔高一尺,道高一丈。机器发帖和反机器发帖一直都是场硝烟弥漫的豪华战争。
自网站开放之日起,这个垃圾信息就没有消停过,而且这个垃圾发帖的时间都有一定的规律,一般是从上午9点、10点的时候开始,到下午下班前这段时间,是发帖机发动的时候,看的出来,发帖机的操作者也是一个正常上班的“好同志”。

从发帖机发布的信息来看,操作者也刻意优化了下信息内容,以免信息过于垃圾,直接导致发帖被屏蔽而失败;有时候,我看着这些内容,还真为这些操作者们拍案叫绝,因为连我差点都被这些机器发的帖子给迷惑住了。但是,从连续的几个帖子发布的时间间隔来看,有的竟然是同一秒钟发布出来的!只要你真的是个人在发贴,发一个帖子就打几个汉字怎么着也要几十秒吧。
很多时候,我不得不佩服这些发帖机的开发者们,有些发帖机的确够强悍,像伪造来路,伪造cookie等对他们来说是小case一桩,而且有的还会自动跟踪你网站的修改,自动调整。牛。
从地域来看,广东的垃圾信息真是太多了,像广州,深圳,东莞尤其厉害,我站上的大部分垃圾信息都是来自这些区域。看的出来,广东的经济发展的确很拽,但这里您要注意了,这些垃圾帖子的内容绝大部分是关于走私、水货产品什么的,您可以自己联想了,为什么广东会有这么多的垃圾信息了。
如果你的网站是采用简单防御垃圾信息的方法,可要注意了,看我分解:

1、采用来路判别 == 失败

很多网站对于机器发帖的第一步便是验证是否有合适的来路信息,然而稍微懂点程序的人都知道,无论是asp,php还是.net,jsp伪造来路信息是轻而易举。所以这招基本失效。但有总比没有好。有这个验证还是能防范一些低级发帖机的。

2、采用发帖时间判断 == 失败

从发布页(如add.asp)获得一个当前系统时间,然后用户提交信息(如提交到addok.asp)时计算用户在这个页面上的停留时间,如果过短,比如小于30秒钟,则判断为机器发帖。这招也失败了,发帖机根本不访问add.asp发布页,它直接post一个当前虚假的时间,使得这个时间远远大于30秒,所以这个方法也失效了。

3、采用cookie限制发帖次数 == 失败

程序员们知道,cookie是客户端的信息,也是可以被伪造的。比如,你采用每次发帖成功后,采用程序使得某个cookie的值加1,当这个cookie值累加到N,就拒绝在当天继续发帖。发帖机如何破解这个方法呢?其实很简单,发帖机要做的就是伪造这个cookie,使这个cookie的值永远为1,也就永远不会超过限制了。

4、使用自身的反垃圾信息过滤系统 == 有作用

把垃圾信息的关键字屏蔽掉,的确可以有效遏制机器发布恶意的垃圾帖子。但这个方法局限性很大。它只能屏蔽那些信息内容已经包含了恶意关键字的帖子,而对于伪装的帖子不起作用。

5、同一IP当日发帖数量限制 == 有作用

采用基于IP的技术防止发帖机器发帖,是有作用的,而且经过了检验。具体方法就是:判断当天发布的帖子里相同IP下所发布的帖子数量,如果这个数量大于一个数值,就限制其继续发帖。
那有人说了,不能换个IP再发啊,是的,发帖机是可以换IP发布,但是,换一次IP,就意味着它要掉一次线,而一般发帖机是多线程的,它这样做其他进程也同样无法发布了。

6、返回给客户端的错误提示信息尽量模糊

什么意思呢?比如,发布帖子,如果服务器端做了内容关键词的过滤,如果机器提交的帖子内容里边含有该关键词,则不能给客户端明确的提示,如:"Bad contents","内容里边含有非法关键词",这样攻击者就会对词语进行特殊化处理,如加空格,加一些特殊字符隔开,而应该给出比较笼统的提示"Invalid Info !" 或 "INFO ERROR !",这样攻击者就找不出具体哪里有问题,也就增大了攻击的难度。

7、如何防止被人刷验证码?

坑产品设计出来的注册/登录是可以获取手机验证码的,但是却没有加上图形验证码。然后现在我们的这个获取验证码的接口被人刷了好多下。最近一个小时足足有数千次请求,而且居然还是不同的IP和不同的手机号码....

求支招,除了加图形验证码外,怎么样防刷?

解决方案:
我能想到的,除了图形验证码:
基于手机号码,限制每天每个手机最多发N条验证码。这个貌似LZ已经加了。
基于IP,限制每天每个IP最多发N条验证码... -- 缺点:容易误杀正常用户,慎用
【究极手段】基于用户行为大数据分析
如何基于用户行为分析呢?想到一个简单的方法:
首先,正常用户除了发送验证码这个请求外,应该还会访问页面的其他资源,比如CSS/JS/HTML/图片等。
然而,如果是刷子,他可能并不会专门去访问这些个资源。
所以可以在用户访问页面的时候就记录一个human参数存在session中,每当其请求页面中的一个资源则human += 1。等到发送验证码的接口的时候,取出来这个human参数看看其值是多少,正常的一个用户这个human值应该是大于某个值的(比如5),小于的则应该就是刷子。(为0的肯定是刷子无疑)
我说的比较简单啦,更复杂点的可以顺便把几次请求之间的间隔记录下来,点击登录或注册按钮前鼠标的移动轨迹,鼠标按下收起的时间等等记录下来综合分析。
要是能引用或抄一个像google做的reCAPTCHA -- 点一下就自动识别人还是机器刷子 -- 就好了。

综上所述,防止发帖机发布垃圾信息,不能仅仅采用一种方法,如果把以上的5种方法综合利用,在防止垃圾信息横行的动作上是富有成效的。大家还可以根据第三点把cookie改造称session,这样第三个方法也能起到有效的防范作用;这样,后面三种方法一结合,就可以搭建一个比较强健的反垃圾信息系统了。

注:本文为转载,原文链接:
自动发帖机的斗争过程防止垃圾评论的几个方法总结

相关文章:
如何防止垃圾评论
谈谈反垃圾


Corwien
6.3k 声望1.6k 粉丝

为者常成,行者常至。