风控架构实践(一)

217 阅读2分钟

背景

电商或者泛电商平台快速发展中,会出现黑产和羊毛党的攻击,对企业营收和系统的稳定性产生不良的影响。 风控系统应运而生,c端服务对接风控系统,可以防止各种攻击行为。

攻击群体

  • 黑产 即使用模拟器或者批量使用肉机来注册、领券或者交易,无业务价值的用户。
  • 羊毛党

保护场景

注册登录保护

  • 某IP最近1小时注册账号数超过10个
  • 某账号最近3分钟登陆次数大于5次
  • 1小时内同一设备id多个uid登录(大于5)

营销保护

  • 某账号群体最近1小时购买优惠商品超过100件
  • 某账号最近3分钟领券超过3张

交易保护

  • 某账号180天内购买某商品>12
  • 低毛利商品
  • 限定渠道商品

黑白名单

业务分析

此时的系统需求比较简单。只要满足异常设备的拦截和基本的保护规则即可。 主要是规则的设计要满足可扩展,之后会添加各种维度聚合的规则。

对黑产虚拟机和肉机的识别:移动端sdk或者js文件会生产设备指纹(一个字符串),传到后端,直接解析设备指纹获取设备相关信息。比如:是否root,是否为代理ip,电池电量,开机时间等。

对业务规则进行抽象:保护规则都是基于自然语言,需要转化为机构化描述,方便程序编写和扩展。

任一规则都是分为两部分计算判断的:存量技术+增量判断。 比如:10分钟内某ip注册数<5。我们需要先计算10分钟内某ip已经注册次数+当前注册请求次数(1次)。 所以对于存量的统计可以转化为类sql来理解:统计单位时间内,多条件的聚合。

例如:select count(a) from table where timestamp between 5 min and b = '注册'

架构设计

识别系统的各种角色和用例

用例分析

image.png

核心模块设计

image.png

核心类设计

先介绍获取解析规则模块的类结构。 image.png index类:分为正常指标和特殊指标。

  • 正常指标是指10分钟内某ip注册数等,方便结构化查询。
  • 特殊指标指某账号群体最近1小时购买优惠商品超过100件,因为优惠商品很难定义,还会经常改变,这类指标很难做到结构化,需要写代码测试上线。

condition类:条件类,定义条件的满足表达式,比如:10分钟内某ip注册数 > 10

Rule类:是条件类的集合,加上计分规则。比如:初始等分 + 指标 *(操作符) 命中基数

总结

本篇文章主要讨论了风控最为核心的规则判断的构建。既然构建了规则,那么接下来就是判断规则是否成立。下篇主要内容是如何选择表达式引擎来计算判断规则。

最后欢迎风控的小伙伴加微信,一起讨论建设风控平台。微信号:zhoulong807012161