分享裂变背后:为什么光验证手机号根本拦不住羊毛党
· 分享镜
分享裂变背后:为什么光验证手机号根本拦不住羊毛党
一个账号领了 37 份礼包
活动第三天,一个账号领了37份新人礼包。翻日志发现:这个用户注册了37个账号,每个都用真实手机号+验证码注册,每个账号都领了奖励。
开发说:我们有手机号验证码,怎么可能批量注册?
因为有接码平台——花几十块钱,能租到几百个真实手机号,每个号接一条验证码短信用完即弃。
接码平台是什么
市面上有专门做"空号接码"的平台,你充值10块钱,能租几十个真实手机号,这些号只用来接一条验证码短信,验证通过之后就废弃。
所以光靠"一个手机号只能注册一次"根本防不住。羊毛党的成本极低,50块钱可以注册几百个账号。
正常用户 vs 羊毛机器人的行为差异
这才是防薅毛的核心出发点:行为特征不一样。
| 正常用户 | 羊毛机器人 | |
|---|---|---|
| 注册路径 | 看到推广 → 下载 → 注册 | 接码注册,直奔领奖页 |
| 领奖后行为 | 继续浏览、下单、使用 App | 领完立刻不活跃 |
| 设备/IP | 独立设备,真实网络 | 同一设备注册多账号,机房/代理 IP |
羊毛机器人的特征很明显:
- 注册完立刻领奖,中间没有任何浏览行为
- 同一设备注册多个账号(换手机号,但设备没换)
- 同一 IP 段大量注册,尤其是机房 IP 或代理 IP
- 账号没有真实使用行为,领完奖励基本消失
多维度联合判断
只用一个维度很容易被绕过,需要联合打分。
def risk_score(user_event):
score = 0
# 设备指纹检查:同一设备注册过几个账号
device_accounts = get_accounts_by_device(user_event.device_id)
if len(device_accounts) > 2:
score += 40 # 高权重
# IP 聚集:同一 /24 网段注册量
ip_count = get_ip_subnet_count(user_event.ip)
if ip_count > 10:
score += 30
# 行为特征:注册到领奖的时间间隔
if user_event.register_to_reward_seconds < 60:
score += 20
# 机房 IP 或已知代理 IP
if is_datacenter_ip(user_event.ip):
score += 30
return score # >= 60 触发拦截
设备指纹是最重要的维度。App 端可以采集设备型号 + 系统信息 + 硬件特征生成指纹,H5 端用 Canvas 指纹 + 浏览器特征。同一设备指纹注册两个以上账号,基本就可以判定异常。
奖励冻结期:给风控留时间
发现问题再撤回奖励,比直接不发要麻烦得多。更好的做法是奖励不立刻到账。
设置 7 天冻结期,冻结期内:
- 风控系统持续分析账号行为
- 如果账号被标记为异常,冻结中的奖励直接作废
- 正常用户 7 天后自动到账,体验几乎无影响
奖励状态:PENDING → (7天后)→ SETTLED(正常)
→ (风控标记)→ CANCELLED(作废)
人工审核兜底
风控打分再准也有误判。当单设备或单 IP 触发量超过阈值,进人工审核队列,而不是直接拒绝。
阈值参考:
- 同一设备指纹注册 > 3 个账号 → 人工复核
- 同一 /24 IP 段注册 > 20 个账号 → 触发人工
- 风控打分 60-80 分之间 → 人工,> 80 分 → 自动拒绝
人工审核效率比想象中高,一个运营一天能审几百条,抓住头部批量薅毛的,影响基本能控制住。
说到底:手机号只验证了"有没有一个号",设备指纹才能验证"是不是同一个人"——防薅毛要联合打,奖励冻结期给自己留后手。
评论(0)
登录后参与评论。
还没有评论,来抢沙发吧。

