素材牛VIP会员
关于一个投票系统的问题,如何防止刷票
 贝***0  分类:PHP代码  人气:2093  回帖:19  发布于6年前 收藏

像验证手机号的代价太大,咱就不说了;像验证码这样的,如何设置最好;还有没有其他更加有效的方式?

 标签:javascriptphp

讨论这个帖子(19)垃圾回帖将一律封号处理……

Lv6 码匠
de***22 移动开发工程师 6年前#1

知己知彼,百战百胜

首先弄清用户为啥要刷,刷票对他有啥好处

我们当然会给刷票者设立门槛,但是只要刷票带来的收益大于付出的成本,就会存在刷票的可能性(墨菲定律)。

所以不存在完美的防止刷票的机制,而是根据具体的投票内容设置合适的投票成本。

Lv1 新人
非***扰 交互设计师 6年前#2

现在刷票牛逼的都用人来搞了。我曾经做过投票系统,记录了投票者的IP,然后我发现有很多处于同一网段的地址,后来我查了下这些IP的归属地,发现都是外地的,最后我就把这种连续IP地址的投票保留一票,其他的都删掉。

Lv6 码匠
Ho***95 UI设计师 6年前#3

这个真没办法,做过第一名只有300块的奖金,结果刷票就有几千票了,按一个0.5计算,刷票成本都高过奖金价值了

Lv4 码徒
那***n 产品经理 6年前#4

帐号登录投票,一个帐号只能投一次,这样就是不太方便了,得先弄个帐号登录。。。

Lv6 码匠
黑***心 移动开发工程师 6年前#5

我就直说吧:放弃你的幻想。没有任何方式是必然有效的。

一切防刷的努力都能被破解,只要肯花钱。以我接触过的一些价格举例:

  • 识别设备的特征:这个毕竟是客户端上报的数据,所以随便伪造,无需花钱

  • 电子邮箱:这个几乎是免费的

  • QQ号:信封号洗号后直售。0.15--0.50元/个不等

  • 微信:号池养号出租。0.50--3.00元/个不等

  • IP:肉鸡池或代理服务器集群出租。0.50--10.00元/时不等

  • 短信接收验证:猫池养卡代收。0.05--0.30元/次不等 另外唯有这个同时消耗防守方的资金

  • 短信发送验证:猫池养卡代发。0.20--0.80元/次不等

  • 传统验证码:图像识别。0.10--0.30元/个不等

  • 复杂验证码:人工打号。0.20--0.80元/个不等(这个一般作为图像识别失败时的补充)

  • 同时还有自动点击脚本的定制服务,100--3000元/每套不等,可能要配合使用上边的资源作为消耗品。

(注意:黑产的价格都是模糊、飘忽且各地极其分散的,难有默契或者“行情”。根据个人接触的圈子不同,具体价格不尽准确。)

不要低估互联网黑产这门行业——它远远超出我们一般技术人的想象。

防刷不能靠一门单一的技术,而是要综合分析可能的破解手段,评估攻击者愿意做到什么地步,以和黑产打一场全面战争的角度思考问题。即:如何以最小的消耗,来最大限度的浪费黑产的时间和金钱

而这种问题必然是没有银弹的。所有只提出一种单一手段的答案都该被踩——“技术解决一切”对于某些场合,是一种过于幼稚的幻想,得让现实需求好好削几个耳光治一治。


从这个意义上,单纯的提问这个问题,信息量太少了。具体策略必然需要根据具体的场景而定。例如:

  • 活动做多大规模?

  • 活动有多大利益?

  • 能否估计出可能的攻击者,会投入多大量级的资金?

  • 预计投入多少资金用于防刷技术?

  • 无论如何防刷,刷单损失客观上仍不可避免。那么最高可以容忍多少个百分点?

一般而言,以下的几种方法是比较划算的(即破解这些需要相对多的时间和金钱):

  • IP限制

  • 微信验证

  • 复杂验证码

  • 短信接收

Lv5 码农
许***焱 Web前端工程师 6年前#6

我来说说验证码。
如果你要设置验证码,请遵循以下几点。 一般这种验证码出现,我就搞不定了。

  1. 字符之间随机互相连接. 加大切分难点。

  2. 字符随机扭曲. 配合连接把切分难度增加一个指数。

  3. 随机旋转. 本身没有增加识别难度,不过配合上面2项增加了切分难度

  4. 单一颜色. 不要搞多种颜色, 单一颜色反而更难切分。

  5. 随机中文。 相比于英文,如果配合以上几项,基本上切分已经变成一件很困难的事情,如果真的要破成本会很高。

PS: 还有其他一些可以增加难度的事情, 不过以上本身已经会让人眼识别成功率不超过50%了, 再加已经没有太大意义。PS 第5项目 换成英文会提高人眼识别和机器识别的成功率。具体自己可以尝试。

Lv4 码徒
黑***人 JS工程师 6年前#7

个人认为,图片式验证码的防刷就是预防图形识别软件,感觉360刷票的认证登陆方式不错,就是给定一个名词,如:吉他,让登陆者点击选择图中所有的吉他,相信这种方式目前没有破解的途径,毕竟这里需要人工智能分析,至于有没有这样的开源库就得自己找了。

Lv1 新人
阿***扫 JAVA开发工程师 6年前#8

现在还可以用 flashcookie ,对普通用户来说很难清除,可以做记录设备id用,对于一些专业的人,就不用考虑屏蔽了,如果有人搞你,是躲不掉的。

Lv1 新人
10***85 产品经理 6年前#9

我觉得这不是个技术问题,应该是个产品管理的问题。纯技术手段必须要结合你对这个“投票”的产品的经营策略才能发挥最大效用。就像刚才有人说的,如果你只是把这个产品定义成一个只能完成简单survey功能的(只有几个记录选项然后upload再汇总的功能)简单产品,那你就要添加许许多多的技术手段来保证你这个产品实现你的预期功能(确实反映客观投票结果)。但是如果你提前在设计产品的时候,以结果为导向,把这一块考虑进去,那么你就应该考虑到对用户的过滤是此产品很关键的一环,而不至于等到先把投票功能开发完了,再回过头去考虑“防刷票”,这是本末倒置,说明产品设计流程有问题。

如果你能解决上面我说的问题,就应该一开始就想到,要先过滤用户,再让过滤出来的用户“干什么”(不管是投票还是评论还是别的什么)。所以应该先搞一个准入制度,比如注册,验证,答题激活,推荐激活,间隔日期激活,积分功能激活权限等等手段来尽量拔高门槛,然后再考虑利用这批过滤出来的用户来做什么。这样才是解决这个问题的正确思考顺序。

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取