风控系统 V1

用于直接交付后端技术开发。通用 Java / Spring Boot 业务系统接入方案,按三个阶段推进:先止损、再识别、后精细化运营。

Java 后端Spring BootMySQLRedis设备指纹IP 风控提现止损
P0

先止损

优先完成注册风控、提现风控、风险日志与审核,防止批量注册和资金损失。

P1

再识别

补充点击行为分析、脚本识别、同设备多账号任务限制。

P2

后运营

增加团队风控、邀请奖励冻结、规则配置、统计看板。

一、总体接入原则

风控系统 V1 建议采用“内嵌业务模块”方式接入原系统:独立建表、独立业务包、在原业务 Service 关键节点直接调用风控 Service。

推荐做法

  • 风控数据单独建表,避免污染用户、提现、任务等核心业务表。
  • 在注册、登录、点击、提现等原业务流程中插入风控检查。
  • 高频计数和短期状态放 Redis,长期画像和日志落 MySQL。
  • 提现为最终止损点,注册为前置过滤点。

不建议做法

  • V1 阶段不建议拆独立风控微服务。
  • 不建议所有风控判断都通过 HTTP 二次调用。
  • 不建议第一版就做复杂机器学习或过重规则引擎。
  • 不建议邀请奖励实时全额发放,应先冻结再结算。
阶段一 / P0

最小可上线止损版

目标:先挡批量注册 + 提现损失

必须完成

  • 新增风险用户画像表、设备表、IP 表、命中日志表、提现风控记录表、审核工单表。
  • 接入注册风控:同设备注册、同 IP 注册频率、邀请码异常增长、本地黑名单。
  • 接入提现风控:风险分、注册时长、同收款账户、同设备多账号、历史命中记录。
  • 后台可查看风险用户、风险详情、审核工单、黑白名单。
  • 命中风险后必须沉淀日志,方便人工复核。

上线标准

  • 注册接口能识别同设备 / 同 IP 批量注册。
  • 提现接口能输出:放行、人工审核、拒绝。
  • 风险用户能进入后台列表。
  • 审核人员能处理提现风险工单。
  • 所有命中规则有日志记录。
阶段二 / P1

点击与行为风控版

目标:识别脚本点击和多账号任务套利

需要补充

  • 新增行为日志:页面停留、点击间隔、鼠标移动、滚动次数、requestId。
  • 任务点击前调用风控检查,异常点击不计收益。
  • 识别固定频率点击、停留时间过短、无行为轨迹。
  • 同设备多个账号当天执行任务时,限制任务或冻结收益。

上线标准

  • 异常点击可被标记为无效,不发放收益。
  • 同设备多账号任务行为可被识别。
  • 用户风险分可因点击异常自动累加。
  • 点击风控日志可在后台查看。
阶段三 / P2

团队、邀请与运营配置版

目标:控制团队作弊和长期运营风险

需要补充

  • 邀请奖励改为冻结结算:被邀请人满足真实活跃、首充、非关联作弊后再释放。
  • 团队异常扫描:同 IP 聚集、同设备聚集、低充值率、高注册爆发。
  • 规则配置管理:阈值、分值、动作支持后台调整。
  • 风控统计看板:注册拦截、提现审核、无效点击、风险用户趋势。

上线标准

  • 邀请奖励可冻结、释放、作废。
  • 异常团队可自动标记。
  • 核心规则可由后台配置。
  • 运营可查看每日风险趋势和拦截效果。

二、核心接入点

业务场景接入位置调用方式处理结果
注册注册 Service 创建用户前riskRegisterService.checkBeforeRegister(...)放行 / 验证码升级 / 拒绝 / 观察
注册成功用户创建成功后riskRegisterService.afterRegisterSuccess(...)写入设备关系、IP 画像、风险画像
登录登录成功前后riskLoginService.checkLogin(...)放行 / 升级验证 / 限制登录
任务点击任务收益发放前riskTaskService.checkTaskClick(...)放行 / 无效点击 / 禁止任务
提现提现申请保存前riskWithdrawService.checkWithdraw(...)放行 / 人工审核 / 拒绝 / 禁止提现
// 注册接入示例 RiskDecision decision = riskRegisterService.checkBeforeRegister(request); if (!decision.isPass()) { throw new ServiceException(decision.getMessage()); } userService.register(...); riskRegisterService.afterRegisterSuccess(event); // 提现接入示例 RiskDecision withdrawDecision = riskWithdrawService.checkWithdraw(request); if (!withdrawDecision.isPass()) { if (withdrawDecision.getActions().contains("MANUAL_REVIEW")) { withdrawOrder.setStatus("PENDING_REVIEW"); } else { throw new ServiceException(withdrawDecision.getMessage()); } }

三、默认风险规则

规则阈值分值 / 动作
同设备注册账号数>= 2+40 / 人工审核
同 IP 24 小时注册数> 5+30 / 人工审核
同 IP 10 分钟注册数> 3+20 / 验证码升级
页面停留时间< 2 秒+15 / 无效点击
同设备当天任务账号数> 2+40 / 禁止任务
注册后提现< 24 小时人工审核
总风险分>= 60人工审核
总风险分>= 90拒绝 / 阻断

四、风险等级

分数等级默认处理
0 - 29LOW正常
30 - 59MEDIUM观察
60 - 89HIGH限制 / 审核
90+CRITICAL拒绝 / 阻断
RiskAction: PASS OBSERVE CAPTCHA_UPGRADE INVALID_CLICK FREEZE_INVITE_REWARD BLOCK_TASK BLOCK_WITHDRAW MANUAL_REVIEW REJECT

五、数据表清单

表名用途阶段
risk_user_profile用户风险画像:风险分、等级、状态、限制标记阶段一
risk_device设备指纹画像阶段一
risk_device_user_rel设备与用户关系阶段一
risk_ip_profileIP 风险画像阶段一
risk_hit_log规则命中日志阶段一
risk_review_order人工审核工单阶段一
risk_withdraw_record提现风控记录阶段一
risk_behavior_log行为日志:点击、停留、鼠标、滚动阶段二
risk_rule_config动态规则配置阶段三
risk_black_white_list黑白名单:用户、IP、设备、提现账户阶段一

六、Redis Key

risk:register:ip:{ip}:{yyyyMMdd} risk:register:invite:{inviteCode}:{yyyyMMddHH} risk:login:ip:{ip}:{yyyyMMddHH} risk:login:device:{deviceId}:{yyyyMMdd} risk:task:device:{deviceId}:{yyyyMMdd} risk:task:user:clicks:{userId}:{yyyyMMdd} risk:user:score:{userId}

七、前端上送字段

场景字段
注册 / 登录deviceId, userAgent, timezone, language, screenResolution, fingerprintInfo
点击任务taskId, staySeconds, lastClickTime, mouseMoveCount, scrollCount, requestId
提现withdrawAccount, amount, deviceId, userAgeHours, todayIncome, last7dIncome

八、后台管理页面

页面核心字段操作阶段
风险用户用户ID、风险分、等级、状态、提现限制、任务限制详情、限制、解除、拉黑阶段一
风险详情画像、设备、IP、命中日志、提现记录查看、备注阶段一
审核工单用户ID、类型、原因、状态、审核人、审核时间通过、拒绝、限制、拉黑阶段一
黑白名单类型、值、名单类型、原因、失效时间新增、编辑、删除阶段一
规则配置规则编码、场景、阈值、分值、动作、状态启用、停用、编辑阶段三
风控统计注册拦截、提现审核、无效点击、风险趋势筛选、导出阶段三

九、交付与联调顺序

步骤内容负责人
1执行风控 SQL,创建 risk_* 表后端
2合并 risk 模块代码:domain、mapper、service、rule、controller后端
3在注册和提现 Service 插入风控调用后端
4前端补充 deviceId、fingerprint、行为参数前端
5后台接入风险用户、审核工单、黑白名单页面后端 / 前端
6灰度开启注册风控与提现风控技术 / 运营
7根据命中日志调阈值,再开启点击和团队风控技术 / 运营

十、最终结论

本 V1 文档的核心是三阶段落地:第一阶段先完成注册与提现止损,第二阶段补齐点击行为识别,第三阶段做团队、邀请、规则配置与统计运营。技术开发时不要一开始追求复杂模型,先把关键节点拦住、把日志留住、把审核跑起来。