如何防御刷票?

2022-02-23 08:41:57 +08:00
 hackun
公司做了个微信 H5 投票的活动,遇到了大量刷票请求过来,求问小服务器如何防御?
2149 次点击
所在节点    问与答
15 条回复
letitbesqzr
2022-02-23 08:52:17 +08:00
付费投票
yEhwG10ZJa83067x
2022-02-23 08:57:46 +08:00
防御应该是防御不了了,只能降低刷票难度,越是设置障碍,体验越差。
另外请问你的刷票定义是什么,是非法的投票请求吗?
1.通过获取 openid 来区分是否是真实微信用户?
2.点击投票的时候做个验证码?
3.同一个 openid 只能投一票?
4.同一 ip 限制每秒投票数?
5.投票需要手机验证码?
yEhwG10ZJa83067x
2022-02-23 08:58:46 +08:00
@letitbesqzr 还是老哥你厉害,对,付费投票,投一票需要 10 块钱!
dinghmcn
2022-02-23 09:07:54 +08:00
@letitbesqzr #1 拍卖呢
cheng6563
2022-02-23 09:16:07 +08:00
简单点,付费买票
Chad0000
2022-02-23 09:16:29 +08:00
打电话投票:

用户:喂是我吗
电脑:尊敬的客户你好,我司正开展充 1 万送 2 万的活动,心动不如行动,请按 1 了解详情。同时你可能感兴趣的活动……
电脑:「十分钟后」重新收听请安#,投票请按圆周率前 20 位数字。
用户:嘟嘟嘟
snoopyhai
2022-02-23 09:19:10 +08:00
但凡活动刺激点,首先碰到的问题应该是请求,能扛得住请求的,应该也能防得住刷票吧。
最简单 openId 限制一下。
9136347
2022-02-23 10:58:11 +08:00
首先,我们要明确一个问题,你要解决的是访问量过大,还是被刷票的业务问题。
如果是业务问题:
最简单的引入一个滑块验证一类的验证方式,可以规避掉大量的非法请求。
第二个做法就是在服务端通过 IP ,请求的系统型号,软件版本等等做一个综合的判断来区分是否是重复请求。
第三,如果别人是真实的买的,比如我确实拉了一千个人来给我刷,你就认栽就行了。
如果是流量的问题:
一个小服务器,又想要抗住大的流量无非
1 优化逻辑,逻辑越简单越好
2 缓存,能 cdn 的 cdn 掉,能在 nginx 上静态缓存的就 nginx 静态缓存,能缓存到内存的缓存到内存
3 减小请求数据提及,能给他返回 3 个字段就不要返回 4 个字段,能只需要请求 5 个字段就不要请求 6 个字段,别小看这点请求量,之前返回 10K ,现在返回 8k ,可是实打实的 20%的带宽降低。
4 …..杂七杂八具体情况具体分析吧。
sun019
2022-02-23 11:08:42 +08:00
基本防不了。
按场景按需求可以做一下限制:
1 ,增加验证码(当然也会被破解),微信验证,如果是客户端 就客户端验证(都可破)。
2 ,增加 投票地区限制( IP ),如果北京地区的才能投票,但是会有误报的可能。优点可以防大部分。
3 ,终极的,充值投票,一分钱一票。(以前真干过),那体验哈哈。
66beta
2022-02-23 11:13:23 +08:00
到底是防御刷票,还是防御小服务器被打爆
hicdn
2022-02-23 11:19:51 +08:00
微信内的投票,直接调用微信的 openid 做限制,一个微信只能一次 /一天一次 /一天 N 次。别人真买一堆小号来刷,说明你们活动的奖品值得,防不了的。
LxExExl
2022-02-23 11:24:40 +08:00
@letitbesqzr

让我想到了以前的手机短信投票,一条 1 元。
letitbesqzr
2022-02-23 22:22:03 +08:00
@LxExExl
@justrand

还真不是开玩笑。。付一分钱也好,哪怕付了后马上退款回去。很多黄牛手上的小号没开通微信支付的,而且支付的风控会强很多。
hackun
2022-02-23 22:40:04 +08:00
回复有点晚了 确实是想防御短时间内高并发的请求 来投票的都是真实的微信用户 都能获取到 openid 具体的投票功能限制已经加上了
yEhwG10ZJa83067x
2022-02-24 08:16:38 +08:00
@hackun 高并发就优化逻辑吧,大概率往缓存上走,readis

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX