以一次虚拟的活动及数据,尝试通过数据发现补贴活动中的羊毛党。
一、背景与目的
1.1 背景
共享单车潮汐效应明显,上班高峰期单车大多堆积,复用率低,平台运力有限,可缓解程度有限。
为解决这一问题推出了[众骑]活动,以1-20元不等的红包奖励形式鼓励有闲暇时间的用户在早高峰反向骑行,希望缓解高峰期的单车供应问题。
但活动上线后发现,红包不断被发出去,早高峰的单车供应问题并没有缓解。
1.2 目的
找到[众骑]活动异常用户/群体,推测其作弊手段与行为模式,并给出后续处置措施。
二、 活动简介
活动名称:[众骑]活动
活动用户:共享单车应用所有用户
活动期间:20181010 -- 20181031
活动时间:早高峰
活动范围:北京(指定地铁站)
活动规则:
1)在[高峰]时间段,于指定的地铁站附近100m[解锁活动车辆];
2)在距离地铁 >= 500m后[锁定活动车辆];
3)判断完成的依据是车辆未配置GPS,依靠[解锁车辆] 和 [锁定车辆]的地理位置信息作为唯一依据
活动成本:每完成一次骑行奖励1-20元不等的红包
用户行为预测:
活动时间为每天的早高峰,即早上7点到9点,2小时共120分钟,骑行500m;百度地图显示500m骑行时间约为3min,考虑到有赶时间、特别快用户,按照每次2min计算,假设用户在活动期间无休息、无停顿、无坏车的理想情况一直骑行,那么早高峰可骑行的次数为120/2=60次。
三、 发现异常用户及其手段
3.1 结论
异常用户:本次活动异常的用户为1分钟内含有两次以上解锁、锁定活动车辆事件的行为特征用户。
作弊手段:利用定位虚拟器进行虚拟定位,实现订单的快速完成以获得红包奖励。
原因:车辆未配置GPS,只能依靠[解锁车辆] 和 [锁定车辆]的地理位置信息作为唯一依据,
数据依据是同一个用户能在一分钟内完成多次解锁、锁定,而活动要求‘骑出地铁500米范围’,正常情况下,用户不可能完成;其次,同一用户,在间隔不到1分钟内,能同时在多个地铁站实现骑行。
3.2 找到异常特征用户
操作:【事件分析】 >> [解锁活动单车] 的 ‘总次数’、‘触发用户数’
从活动总体来看,15日至16日[解锁活动单车]的总次数与触发用户数都发生了极大的变化,特别是触发用户数环比增长了91.25%(1505-789/789*100%);每日超千人参与的状态一直持续到10月27日,在10月28日用户数急剧下滑,环比下降了52.75%(832-1761/1761*100%),在这一升一降中,为了进一步确认是活动推广/自然的流量,还是羊毛党的突然涌入,需从其他维度细化后确认。
根据5W1H模型拆分维度:
Who--用户基本属性:年龄、性别
Who--设备属性--操作系统、设备制造商、设备型号、操作系统版本、应用版本、是否wifi
Where--地理属性--地铁站
How--车辆属性 -- 解锁方式、车型
从以上维度逐一查看数据后,除个别有所差异外但未明显异常。直到发现‘设备型号’扫描次数最多的是iPad Air2,这与出门或上班必带手机的常识有所出入。
点击查看【用户列表】,点开任一用户ID为309893查看其【用户行为序列】。发现用户的骑行次数都较高,最高的一天发生了422事件、骑行200多回。
点击查看具体序列,发现该用户一次完整的骑行周期(解锁活动车辆+锁定活动车辆)只需十几秒甚至几秒;不到20秒的时间内,能从苹果园地铁‘瞬间移动’到中关村地铁,而实际上苹果园距离中关村18.6公里,骑行约需1小时23分钟、驾车约需30分钟,明显非物理行为能办到。
此外,还存在一个[解锁活动单车]跟着多个[锁定活动单车]的事件,且每个[锁定活动单车]都有金额不等的红包奖励。
所以,该用户明显为异常账号。
3.3 行为特征
根据3.2发现用户异常的特征为:
1)骑行次数远高于理想次数(60次);
2)十几秒甚至几秒内能完成一次骑行周期;
3)解锁与锁定行为并非一一对应。
3.3.1 每天骑行50次以上
根据第二部分【活动简介】关于用户行为预测中,活动时间为7点到9点,2小时共120分钟,骑行500m,骑行时间约需为3min,考虑到有赶时间、特别快用户,按照2min计算,那么,在活动期间无休息、无停顿、无坏车的理想情况一直骑行,最高可骑行次数为120/2=60次。
但在分布分析中,骑行次数的划分只有30-50次、50-100次,在点击50-100次区间用户,查看其行为序列,验证多个用户后,发现50次左右的用户骑行时间与行为也明显异常;且50*2=100分钟,两小时持续骑行100分钟,也是很不一般的行为,因此将每天骑行异常次数定为50次以上。
在【分布分析】中查看[解锁活动单车]的次数,发现每天解锁50-100次用户数为80-110人次、占比6%-16%;100次以上的都有40-60人不等,占每日骑行用户的2%-8%。
3.3.2 1分钟内完成2次骑行
操作:为了进一步验证异常用户行为及数据量,通过【漏斗分析】设置[解锁活动单车]、[锁定活动单车]事件,为防止正常用户使用到无法使用车辆而解锁的情况,将漏斗设置为两个解锁与锁定动作,session间隔为1分钟。
结果显示,在参加活动的12061人中,在解锁单车1分钟内锁定、再次解锁并锁定整体转化率为6.16%、共743人。除第一步转化率只有7.01%外,第二步、第三步的转化率高达88%以上。
3.3.3 异常用户行为路径
在【用户行为路径】中能看到,在活动期间以[解锁活动单车]为开始事件、session间隔为60秒的99967次会话中,有0.23%、231次会话是再次[解锁活动单车]。
3.3.4 异常用户数
将上述三种情况用户ID导出后去重计数得到共有855名用户。
其中,有744名用户ID都是连续的,从309245 开始一直到 309999。
3.4 手段推测
综上,此次活动期间3种行为特征、2类异常情况,约855名用户异常,其异常行为表现为:
1)一天(120分钟)内能完成50次以上的骑行任务,每次骑行周期时长小于1分钟,主要在几秒内;
2)1-2分钟之内能出现在不同的地铁进行任务(排除人工解锁、搬运、汽车运输的可能,北京路面交通几分钟能到一个站的人比薅羊毛还有本事!);
3)解锁与锁定并未间隔对应事件,即存在多个解锁、再锁定或一个解锁、多个锁定的情况;
4)某些异常用户之间匿名ID序号具有连续性。
所以,本次活动异常为1分钟内含有两次以上解锁、锁定活动车辆事件的行为特征用户,推测其利用定位虚拟器进行虚拟定位,而非骑车运输、人工搬运等物理操作。
四、 羊毛党用户行为模式
4.1 结论
既有单打独斗,也有团伙作案,但其作弊方式都是利用车辆没有GPS,只能依靠[解锁车辆] 和 [锁定车辆]的地理位置信息作为唯一依据的漏洞,通过虚拟定位器上传虚假定位、实现快速完成订单获取红包奖励的目的。
4.2 团伙作案
团伙作案,在某些方面具有高度相似性,如时间、行为路径、设备属性甚至注册时间等方面具有相似性。而匿名ID为309245 -- 309999的744名用户在ID连续(某一程度说明注册时间接近)、骑行时间、骑行次数高度相似,说明其为团伙作案。
在【事件分析】、【漏斗分析】、【分布分析】中选出309245 -- 309999的744名用户,查看其主要行为特征。操作为对事件进行‘Distinct ID 正则匹配以309开头的用户,排除匿名ID为3096-3099、309、3091的6位用户’的筛选,得到744位用户的结果。
【漏斗分析】显示,该批用户总转化率为99.73%,第一步与第二步转化率高达100%,第三步转化率为99.73%,转化率极高说明该批用户在1分钟之内完成了2次骑行任务,时间都超短。另外,红包不等于0的每个环节的转化率都是100%。
【分布分析】显示,744名用户有717位,占比96.4%骑行次数都在100次以上。
行为模式是通过多部机器、设备注册大量账号(744),每天利用200多个账号通过虚拟定位器在活动地铁,几秒内实现[解锁活动单车]/[锁定活动单车]完成任务,以每天完成50次以上的任务量获得1-20元不等红包奖励实现获利的目的。
4.3 单打独斗
单打独斗,在用户基本属性、地理位置及设备属性上特征不是那么明显,某一时段内解锁、锁定频繁,但频次较团伙作案较低、不稳定的用户。
导出的855名用户中,除744名匿名ID外,其他的皆为单打独斗型用户;一部分用户,约40名,注册时间较早,开始刷任务时间一般在活动的第一天或第二天,应该属于看到活动漏洞继而产生薅羊毛想法;另一部分用户约69名,注册时间较晚,应该是在发现或听到有薅羊毛可能而注册了账号,继而开始刷任务、领红包。
从导出的855名用户中可看出,异常用户的年龄40-50岁区间的分布最多、其次是30-40岁,即主要以中老年用户为主。
从性别上看,异常用户男性占比偏多,为51%,女性占比偏少,为49%;而整体用户的性别分布,女性用户占比略高,为49.81%。
五、活动后续处置措施建议
5.1 已发现的团伙羊毛用户进行封号
考虑到团队作案真实用户少、在无利可图的情况下后续活跃可能性极低,对于公司只有害而无利,建议对团队账号进行封号处理;单打独斗型用户可能是真实用户,特征不明显、数量较小,且后期可能为公司产生收益,所以以防范为主,暂不追究。
封号名单为匿名ID为309245 -- 309999的744名用户。
5.2 未发现的进行防范
为防范此类事件的再次发生,且在不要伤害现有用户、减少公司损失、保障活动效果的前提下,对活动规则在原有基础上进行以下补充:
账号:一个身份证号只能注册一个账号
设备:一个设备同时只能登录一个账号、进行一次骑行,不支持同时扫多辆活动单车
时间:只有骑行周期 >= 2分钟以上才可获得
空间:骑行距离必须 >= 500米
操作:同一账号在[解锁活动单车]后必须[锁定活动单车],才能再次解锁
5.3 活动方向的调整建议
没有解决的另一个原因可能是活动未细化区分地铁属性,反向骑行造成了原本紧张的单车供应资源更为紧张。普通用户早高峰是上班时间,潮汐骑行方向是‘家 >> 地铁站 >> 公司’,具体骑行路线如下图。
所以骑行活动应以地铁站为中心,根据平时地铁骑行的方向区分如‘居住’与‘办公’的标签属性,以设置与正常用户反向骑行的路线。
但目前活动并没有对地铁站附近属性进行区分,从地铁附近的骑行次数来看,复兴门、海淀黄庄、西直门等地发生的骑行次数居首,而这些地铁大部分为办公区,[众骑]活动鼓励用户从地铁站开始骑行,500m后获取红包奖励的活动方式,鼓励了原本不需要骑行的用户进行骑行,只会让原本紧张的共享单车资源更稀缺,早晚高峰的供应不能得到改善。
解决方案:
1)找到地铁站相关的数据,查看最近一年、早高峰时段的地铁附近100m作为[解锁]事件与[锁定]事件的次数、人数;
2)根据地铁在早高峰[解锁]事件与[锁定]事件的高低,设置不同的骑行方向,如当地铁附近100m在最近一年时间[解锁]事件次数远高于[锁定]事件时,说明该地铁办公属性的可能高于居住的属性,则[众骑]活动鼓励用户从其他地方开始骑行,到地铁进行[锁定];当[锁定]事件次数远高于[解锁]事件时,说明该地铁附近的居住属性可能高于办公属性,则[众骑]活动鼓励用户从地铁开始骑行,到地铁500m后进行[解锁]。
根据地铁站早晚高峰不同骑行方向,对地铁属性进行区分,细化不同地铁站的不同时段的骑行方向。