1.水军为了做更多生意自曝身份,在微信昵称上用了显而易见的刷票词语,比如用“票”筛选投票数据,就得到了大量的刷票信息,见图:
这样,只要通过一定的规则来匹配投票人的微信昵称,判断出投票人是否是刷票的,如果是进入黑名单。如果一个被投票的有大量黑名单的人给他投票,那么他就有花钱买票嫌疑。
2.每天投票量统计分析,如果是持续几天的投票。我们设想被投票人每天都在努力地拉票,从开始到结束应该是一个影响力越来越大或者影响力在结束的时候弱一点,所以每天的投票量统计曲线是先抑后扬或呈正态分布。把每个选 手的每天投票量曲线做出来,和其他人不一样的就一眼看出来了。
3.时段投票量统计分析,这个应该比较容易理解,投票时间应该符合一般人的作息时间,如果在凌晨一、两点某个选手出现大量的投票,而他白天投票量反正少,这就很难用正常投票解释了。
4.投票数爆发点与超越关系的分析。买票是需要成本的,被投票人买票的话当然是想用最少的成本取得第一。如果他被别人超越了的话,不想让自己先期投入变成“沉没成本”,只能加钱再买票再次超越别人。所以,如果一个选手多次被别人超越后投票数立马上升,特别是上升的票数都差不多(想象一下每次都是一百一百地买票),那就基本是刷票了。
5. 多人刷票的情况。这种情况下就有点好玩了,发展的结果是:
a.谁也不服谁,杠上了,超越关系明显。最后钱多的2,3个人超过其他人好多倍的票;
b.为了节约成本,保持第二或第三,在最后时段为了夺冠冲刺刷票,产生了一个非常异常的投票量曲线。
谁最清楚哪个人是刷票水军呢?应该是疼xun。如果是专门做投票系统,积累了大量数据的话,是可以建立模型识别是刷票行为的(至于为了点击量是否愿意做这个,或者做了这个不启用就不得而知了),小公司的话也可以用第1点做简单地判断,另外可以加验证码,增加投票时间操作,提高刷票水军的时间成本,另外验证码看多了眼睛也会花的偷笑。
延伸阅读:有关于如何防止刷票
刷票行为
,一直以来都是个难题,无法从根本上防止。
但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制。
基于 PHP
,下面介绍防刷票的一些技巧:
1、HTTP_REFERER
: 校验 $_SERVER['HTTP_REFERER']
。可伪造,使用 CURL
。
curl_setopt($ch, CURLOPT_REFERER, 'HTTP://www.baidu.com');(攻击手段)
2、IP限制
:加上 IP
投票限制。可伪造,使用 CURL
。
$ip = ***.***.***.***; $header = array( "CLIENT-IP:{$ip}", "X-FORWARDED-FOR:{$ip}", ); curl_setopt($ch, CURLOPT_HTTPHEADER, $header);(攻击手段)
3、User-Agent
:校验 $_SERVER['HTTP_USER_AGENT']
。可伪造,使用 CURL
。
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)");(攻击手段)
4、验证码
:采用非常复杂的验证码,可以防止一些菜鸟攻击者。
a:但是专业刷票机可以攻破。如果不用验证码,投票基本就歇菜了。 b:验证码获取方式,采用异步加载,即点击输入框时,才去请求。 c:投票成功后,删除验证码的 Session。
5、登录
:用户必须登录才能投票。
a:可以攻破,写程序不断注册新用户,然后用来投票。(攻击手段) b:指定大于某个 UID 的用户,或者某段时间内活跃的用户,才能进行投票。(预防对策)
6、限时投票
:投票程序,只在某个时间段内开放。否则,对方半夜刷票,你咋办?
a:从 早 8 点 至 晚 23 点。(预防对策)
7、投票间隔
:用户投票后,需要隔多长时间才能继续投。
a:很多投票站点基本上都有这个限制,但是对于更改 IP的攻击,就没办法了。 b:针对 UID 限制,可以有效防止攻击,但是可以使用批量注册马甲用户。
8、投票结果展示
:延迟展示,友好展示。
a:页面上投票,JS 立马加1,但是刷新页面,不一定立马展示最新投票结果。 b:返回状态给页面(感谢您的投票!或者 投票成功!至于有没有成功,另说了!)
9、补票逻辑
:常见于一些软件评选之类的投票。
a:有时候软件厂商会为了让自己的票数高一点,会私下给活动举办商 $,后台进行补票。 b:后台跑脚本,采用 IP 库,缓慢平滑的增加票数。
10、扣量逻辑
:常见于一些软件评选之类的投票。
a:这是个杀手锏,后台跑脚本实时监控异常增长(刷票)的项,然后实施扣量逻辑。 b:即对于这个项,投 10 票才算一票。
11、Cookie
:常用的手段。比较低级。
a:投票后,在客户端写入 Cookie,下次投票时判断 Cookie 是否存在。 b:但是,这种方式非常容易攻破,因为 Cookie 可删除。
12、加密选项 ID
:对一些投票选项的ID,进行随机加密。
a:加密算法,加Salt,并且设置有效时间,比如5分钟内。 b:服务器端进行解密并且验证。
13、人工刷票
:没办法防。。
a:雇佣了一批水军,进行刷票,这个真没辙,人家确实是花了血本的。