V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hackun
V2EX  ›  问与答

如何防御刷票?

  •  
  •   hackun · 2022-02-23 08:41:57 +08:00 · 2020 次点击
    这是一个创建于 765 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司做了个微信 H5 投票的活动,遇到了大量刷票请求过来,求问小服务器如何防御?
    15 条回复    2022-02-24 08:16:38 +08:00
    letitbesqzr
        1
    letitbesqzr  
       2022-02-23 08:52:17 +08:00   ❤️ 1
    付费投票
    justrand
        2
    justrand  
       2022-02-23 08:57:46 +08:00
    防御应该是防御不了了,只能降低刷票难度,越是设置障碍,体验越差。
    另外请问你的刷票定义是什么,是非法的投票请求吗?
    1.通过获取 openid 来区分是否是真实微信用户?
    2.点击投票的时候做个验证码?
    3.同一个 openid 只能投一票?
    4.同一 ip 限制每秒投票数?
    5.投票需要手机验证码?
    justrand
        3
    justrand  
       2022-02-23 08:58:46 +08:00
    @letitbesqzr 还是老哥你厉害,对,付费投票,投一票需要 10 块钱!
    dinghmcn
        4
    dinghmcn  
       2022-02-23 09:07:54 +08:00
    @letitbesqzr #1 拍卖呢
    cheng6563
        5
    cheng6563  
       2022-02-23 09:16:07 +08:00
    简单点,付费买票
    Chad0000
        6
    Chad0000  
       2022-02-23 09:16:29 +08:00 via iPhone
    打电话投票:

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

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

    还真不是开玩笑。。付一分钱也好,哪怕付了后马上退款回去。很多黄牛手上的小号没开通微信支付的,而且支付的风控会强很多。
    hackun
        14
    hackun  
    OP
       2022-02-23 22:40:04 +08:00
    回复有点晚了 确实是想防御短时间内高并发的请求 来投票的都是真实的微信用户 都能获取到 openid 具体的投票功能限制已经加上了
    justrand
        15
    justrand  
       2022-02-24 08:16:38 +08:00
    @hackun 高并发就优化逻辑吧,大概率往缓存上走,readis
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4431 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:04 · PVG 18:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.