手把手带你搭建秒杀系统
佘志东
前京东交易平台(上海)负责人、资深架构师
12374 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 18 讲
前期准备:技术选型与环境准备 (2讲)
准确无误:打造不超卖和公平的秒杀系统 (2讲)
雷令风行:性能调优更上一层楼 (3讲)
手把手带你搭建秒杀系统
15
15
1.0x
00:00/00:00
登录|注册

09|御敌国门外:黑产对抗——防刷和风控

你好,我是志东,欢迎和我一起从零打造秒杀系统。
经过前面对秒杀业务的介绍,你现在应该清楚,秒杀系统之所以流量高,主要是因为一般使用秒杀系统做活动的商品,基本都是稀缺商品。稀缺商品意味着在市场上具有较高的流通价值,那么它的这一特点,必定会引来一群“聪明”的用户,为了利益最大化,通过非正常手段来抢购商品,这种行为群体我们称之为黑产用户。
他们确实是聪明的,因为他们总能想出五花八门的抢购方式,有借助物理工具,像“金手指”这种帮忙点击手机抢购按钮的;有通过第三方软件,按时准点帮忙触发 App 内的抢购按钮的;还有的是通过抓取并分析抢购的相关接口,然后自己通过程序来模拟抢购过程的。
可不管是哪种方式,其实都在做一件事,那就是先你一步。因为秒杀的抢购原则无外乎两种,要么是绝对公平的,即先到的请求先处理,暂时处理不了的,会把你放入到一个等待队列,然后慢慢处理。要么是非公平的,暂时处理不完的请求会立即拒绝,让你回到开始的地方,和大家一起再比谁先到,如此往复,直至商品售完。
因此黑产的方法也很简单,就是想法设法比别人快,发出的请求比别人多,就像在一个赛道上,给自己制造很多的分身,不仅保证自己比别人快,同时还要把别人挤出赛道,确保自己能够到达终点。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

秒杀系统面临黑产用户的挑战,对系统造成巨大威胁,破坏公平抢购环境并带来性能开销。本文介绍了针对黑产流量的防刷和风控措施。作者提出了针对黑产流量快速和高频率的防范策略,包括Nginx有条件限流和Token机制。通过Nginx限流规则和Token机制,可以有效防止黑产流量对系统的冲击,确保系统的正常运行。文章详细介绍了Nginx限流规则的配置和实践,以及Token机制的实现步骤和效果验证。黑名单机制提供了更严格的防范方案,可以有效拦截大部分场景下的刷子流量,保障秒杀系统的稳定运行。风控在秒杀业务流程中非常重要,需要建立在大量的数据之上,并通过复杂的实际业务场景考验,不断做智能修正,才能提高风险识别的准确率。风控的建设需要多平台、广业务、深覆盖,才能够尽可能多地拿到用户数据。总结来说,本文介绍了如何对抗黑产,提出了多种应对方案,但也指出了各种机制的不足,强调了多维度组合使用的重要性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你搭建秒杀系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 上班只摸鱼
    如果我既想做到严格针对用户 ID 的防刷,又不想使用 Redis,该如何实现呢? 可以使用 用户ID作为key, hash 到同一台nginx服务器进行防刷策略

    作者回复: 思路是正确的,如果是在nginx的前一层(vip或者还是nginx)做,就是您说的这样,如果是在我们文章中提到的nginx服务做hash,那就可以在后端web服务做防刷,这只是种防刷补充。

    2021-11-01
    2
    5
  • qinsi
    没太明白防刷Token的作用:如果生成Token的信息客户端都知道的话,那么客户端自己就可以生成最后一步的Token,直接调用最后一步的接口;如果生成Token的信息需要从前驱的接口中获取,那么势必就无法跳过对前驱接口的调用,那么也就不需要Token来限制必须要调用前驱接口了。

    作者回复: 生存token的方式是后端自己定义,对客户端不可见的,如果您发现token被破解,还可以通过在前置步骤中,往redis存入一些关键信息,然后提单时去校验的方式来防止跳步。其实安全对抗一直都是动态变化的。

    2021-10-15
    4
  • Bold
    黄牛也能绕过前端页面,通过接口直接获取Token,感觉只是增加几个接口调用,还是会比正常用户快
    2022-01-26
    1
    2
  • 上班只摸鱼
    如果我既想做到严格针对用户 ID 的防刷,又不想使用 Redis,该如何实现呢? 可以使用用户ID作为key 进行hash, 同一个用户ID路由到同一台Nginx服务器进行防刷策略
    2021-11-01
    1
  • 一个卖火柴的老男人
    嗯,很喜欢
    2021-10-15
    1
  • 速水御舟
    st 的生成只是简单地将用户 ID+ 步骤编号 那么每次的步骤编号是不是应该加1,应该是记录在某个地方的吧,您里边只是写死了1和2
    2023-06-11归属地:河北
  • 寒溪
    st 英文全称是什么?
    2023-04-27归属地:上海
    1
  • demo123567
    挂了代理咋识别呢
    2023-03-02归属地:重庆
  • Muscleape
    “但也正因为基于单机,如果黑产将请求频率控制在 1*Nginx 机器数以内,按请求理想散落的情况下,那么就不会被我们抓到” 上面这个没有理解呢,麻烦详细解释一下,谢谢。
    2022-01-05
    2
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部