薅羊毛这三个字大家都非常熟悉了,典故出自 1999 央视春晚小品《昨天・今天・明天》中的“薅社会主义羊毛”。
而现在的薅羊毛主要发生在互联网上,尤其集中在电商平台、 P2P网贷平台等。
无利不起早,正是因为这些平台有明显的利益可图。所以,即使需要耗费很大的精力,也有很多人乐此不疲。大家可以搜到,网上有各种薅羊毛信息发布网站,还有许多有组织的薅羊毛群体,这背后是非常大的产业。
正因为羊毛党之多,斗争困难,很多网站和商家对此都很痛苦。同时,感觉羊毛党很神秘,好像羊毛党有什么深不可测的技术,无力抵抗。
所以,本文的目的就是对防范羊毛党的技术做个科普,让大家知道羊毛党到底是怎么薅的,有哪些方法可以杜绝羊毛党的薅羊毛行为。
大家可以先预览一下全文的脉络:
一、羊毛党的分类
根据具体薅的方法不同,可以把羊毛党大致分为五类:
1. 刷单刷票类
这类用户主要靠刷单刷量获取利益,比如淘宝刷单、刷评论等。刷票也算,代刷投票、阅读数、粉丝数等。
2. 任务类
顾名思义,很多网站对特定任务会有奖励,比如注册、问卷、绑卡、实名认证等。有些是消耗时间和注意力,有些干脆是拿自己或别人的信息卖钱。
3. 黄牛党
黄牛党一般利用信息不对称或者技术优势、人脉优势,可以更早、更快获取信息,也可能是团队合作,共享资源,往往会对某些稀缺资源进行垄断,然后再高价转手获利。比如,火车汽车票,有现场排队的黄牛,也有互联网上的黄牛。
4. 黑客类
如果论技术,这些人也未必称得上黑客。但是,特点还是利用技术手段找到平台安全漏洞,获取利益。如果无节制,直接把羊薅死也不一定。
比如,积分商城的商品、抽奖的现金、优惠券代金券等。或者直接爆库,转卖用户数据等。
这一类基本都是违法行为,是要追究法律责任的。
5. 漏洞研究类
这类用户主要研究活动规则的漏洞,也可能加上一点技术手段。跟黑客的区别就是,系统可能没有漏洞,只是没有做好防薅的工作而已。或者是活动规则设计不健全,使之有利可图,比如信用卡养卡。
当然,养卡这种还有深层次原因,平台也需要这些活跃用户,这种算是互赖型的薅羊毛。
如果再抽象一点,可以分成手动和自动两大类。
手动的薅羊毛,即人肉薅羊毛,靠各种群集合起来,有羊头组织和派发任务,其他人只要抽出些碎片时间参与即可。自动的就是要建立一套程序,在特定活动时开启,或者针对某些平台长期运行。
本文主要讨论如何防范自动化的薅羊毛,因为除了黑客之外,这种羊毛党危害最大。而防范黑客的话题太大,也没有什么固定的解决方案,讨论也没啥用。
而对于人肉薅羊毛,做任务、刷单等,目前也没有太好的办法,毕竟都是真实的用户。除非有明确的行为数据模型可以命中,否则只能当做正常用户,这个后面会提到。
二、通过运营手段防范
我们都知道羊毛党的危害非常大,尤其对于运营活动来说,最常导致的问题就是运营成本失控、数据样本失真、垃圾账号混淆、公正性失信等。
其中,运营成本失控,如果把握不好,拖垮公司都是有可能的。而数据统计的失真,也导致无法清晰判断后续的运营策略。羊毛党的蜂拥而至,也会降低真实用户的积极性这忠诚度,榨干平台。
要想防范羊毛党,最主要的还是控制利益的诱惑,避免直接利益,比如红包话费等。
而对于优惠券之类,用户需要购买才能使用的,诱惑就没那么大了。除非是五折以上或者是大额现金券。
此外,购物也需要填写明确的收货地址及其他个人信息,羊毛党会相对谨慎一些。
因此,在制定营销活动时,必须制定完备的业务规则,必须要有相应的活动门槛和限制,例如:
1. 用户群体限制
定义哪些类型的用户能参与活动,指定清晰的分界线。对于特定的活动,可以适当提高参与门槛。
比如, V2 以上会员可以参与,有过购买记录的可以参与等。这种主要针对特定群体会员做运营,对于被排除在外的用户,体验就没那么好了。
2. 客户端版本限制
定义哪些 APP 或小程序版本能参与。比如:拉新活动要求必须使用最新版 APP 注册才给奖励。
3. 次数/上限限制
明确定义账户级、设备级、实名信息级能参与活动的上限和参与活动的频率等。
活动给用户的预期要控制在合理的范围,并且控制上限,才能有效防范羊毛党。比如,每个账号的上限,每日活动预算的上限。
活动规则中也要明确说明,如果发现有人通过刷单刷票等形式违规操作,平台有权取消其参与资格或相应奖励。这样对于异步发放的奖品,也可以在发放之前检查一下数据,筛掉可疑用户。
最后,对于所有活动的数据,在开发之前就要明确提出需要监测哪些数据。不然,活动都已经跑起来了,没有预先埋点的东西肯定是拿不到的。
作为运营对数据一定要极其敏感,如果有暴增的用户量或者参与量,就要小心是不是有羊毛党来袭,而不是光顾着乐。
三、通过技术手段防范
我们可以先简单看一下腾讯云的防刷接口对风险类型的定义:
通过技术手段薅羊毛,最常见的就是高频刷接口,恶意注册账号,撞库等。而这类羊毛党,一般会大量养卡,或有很多虚拟的打码平台,可以提供手机号+验证码服务。有的可能还会拥有大量动态IP地址,海外服务器,以及批量的身份证等;还有专业的设备,称作“猫池”、“卡池”。
对于移动端的业务,许多这类公司还购入大量实体手机,再通过软件批量控制,称为“群控”。对于这种羊毛党和黑灰产,传统的防护手段一般有三种:封IP,封用户,增加验证码,下面分别进行讲解。
1. 封禁 IP 或 IP 段
针对异常 IP,我们可以通过技术手段直接封掉。
目前,大部分网站的接入层都是 Nginx,那么可以考虑使用 deny 配置封禁 IP 或 IP 段:deny 1.2.3.4;deny 1.2.3.4/24。
如果运维层面不方便操作,也可以把请求放到应用层封禁,由 WEB 容器来解决。
这里要注意,封禁 IP 或 IP 段是有风险的,许多公司对外的出口 IP 都是统一的。如果全公司很多人同时访问某网站,就可能被误伤。共享的 WIFI,某些移动基站也可能是有固定的出口 IP。
所以,最好轻易不要封禁 IP 或 IP 段。
2. 封禁用户
我们可以根据某些特定的规则,筛选识别出一批用户,对其进行一些限制。
可以采用黑名单机制,或者用户风险分级、信用分级等。然后再根据黑/白名单,或用户等级限制特定的行为,比如完全拒绝服务、限制某些功能、限制大奖等。
封禁用户的标记有很多种,最基本的是如果用户有登录态的话,就可以直接封账号。如果没有的话,可以通过设备指纹来标识设备。
根据平台的不同,设备指纹可以是 PC 端的浏览器指纹,移动端的 IMEI、MAC 地址、UUID 等,或者这些条件综合起来计算出来的 machine key,使之无法造假,然后在关键请求时校验 machine key 的合法性。
网络环境也是个因素,WIFI 和 4G 的切换,或者网络 IP 的变化,都可以是拒绝服务的理由。这种在银行 APP 中最常见,如果切换了网络,银行 APP 一般会要求重新验证身份才能继续操作。
然而,目前市面上已经出现了各种改机软件和模拟器,能不断修改设备信息,让一般的设备指纹失去作用。
这种方式的风险就是,规则要慢慢养成,过程中必然有遗漏和误杀,操作不当可能会引起大量投诉。所以,这种方式最好是宽进严出,默认用户都是好的,再慢慢收紧,识别出明确的恶意用户。
对于可疑但不确定的用户,可以先标记等级;再针对这些等级单独观察后续行为后,对其进行等级的升降;然后针对不同等级限制行为。
对于羊毛用户的识别标记,可以是基本数据是否健全,比如资料是否完整,是否有真实可信的昵称,手机号等。看行为数据,如鼠标点击、鼠标移动、按键次数,每次打卡是否固定时间等等。
更高级一点的,可以实施全路径实时布控策略,从 APP 启动、账号注册、登录,到业务场景(如直播热度/电商销量排行等),再到设备风险(篡改、虚拟机、设备农场、积分墙等)设下层层关卡,全栈式防御欺诈行为。
3. 增加验证码
验证码有很多种,往往加在重要操作流程中,如注册/登录/绑卡/支付等环节。
大家应该都体验过五花八门的验证码,比如注册用户时的拼图滑块、Google 的 I’m not robot、手机验证码、图片验证码等。
第三方授权的功能也是一道天然屏障,比如微信授权、QQ登录授权,这样恶意用户需要先经过第三方验证一道,起码在访问频率和账号真实性上多了一道屏障。
如果业务允许的话,还可以要求用户进行实名认证,密保问题校验等等。
当然,步骤越多体验就越差。
验证码的主要作用,就是区分操作者到底是人还是机器。
但是不同的验证码难度千差万别,普通的手机验证码,有专门的打码平台可以提供“手机号+验证码”服务,而且都是程序对接,自动化执行。
而对于一般的图片验证码,也有很多公开的图片验证码识别服务。因此,才导致各个平台的验证码越做越复杂,到了人类都很难辨认的程度,体验很差。
4. 系统限流
限流只能一定程度上缓解,或者说让风险可控。主要是防止恶意请求流量、恶意攻击,或者防止流量超出系统的峰值,破坏系统。
前面第 1 小点封禁 IP 也可以理解为限流的一种,在接入层直接拒绝,对于系统资源的损耗最小。而对于网络流量,可以使用 Nginx 的 limit 模块进行限制,防止过大的流量穿透到后端应用。
常用的限流算法有两种:令牌桶算法,漏桶算法。
令牌桶算法,是一个存放固定容量令牌的桶,单位时间内,拿到令牌的才能通过,多余的不派发令牌;漏桶算法则是单位时间内流出的数量固定,流入无所谓。
那么,无论对于网络请求的数据量,还是用户新增的数量,奖品发放的数量,都可以使用这两种思路进行限制(这里是系统架构的知识,不再赘述)。
5. 离线数据分析
如果活动已经在进行,或者活动已经结束,但是总感觉不对劲,这时候就要采用离线数据分析的方法,仔细辨别是否有羊毛党的存在。
数据从哪里来呢?
前面提过,除了活动必须的数据之外,如果想更深入地分析用户行为,在需求设计阶段就要想好,希望记录哪些行为,便于后续分析。如果系统没有提供这些能力,显然也没有相关的数据可以分析了。
6. 综合解决方案
完整风控解决方案,不仅要考虑用户体验,同时又要兼顾效果,需要考虑很多方面。因此,有很多大小公司都专门提供了这方面的解决方案,比如腾讯、阿里、网易等。
此外还有许多提供这种业务的公司,搜索“防薅羊毛”就会出现很多。这些解决方案的基本原理与上述技术无异,只是数据基数更大,再加上机器学习和大数据分析,可以更加准确识别出恶意用户和黑产用户。
以下内容(6.1 – 6.4)来自网易易盾《全链路风控解决方案深度解读》中提到的风控服务,不代表本人观点,仅供参考。文末参考文献中有文章链接,感兴趣的同学可以前往查看。
事前预防:通过数据采集收集用户侧信息、通过业务规则来限定参与活动的门槛、通过身份核验来确认用户身份等手段,防止风险事件的发生。
事中检测处置:通过实时在线的手段来检测风险,并做相应的风险处置,防止风险事件的发生。
事后分析回馈:基于长周期的离线数据分析,计算用户侧、设备侧、IP侧、业务侧的各种风险特征,并作用于事前风控和事中风控。
6.1 事前预防
事前预防主要有三个层面的事项:数据采集、业务规则、身份核验。
a)数据采集
在业务活动的各个阶段,都需要埋点采集数据,主要有设备指纹、操作行为、网络数据、业务数据、第三方数据等。采集的数据主要用于事中的风险监测和事后的离线分析。
b)业务规则
在制定营销活动时,必须制定完备的业务规则,必须要有相的活动门槛和限制,例如:
◆ 用户群体限制:定义哪些类型的用户能参与活动,指定清晰的分界线。比如:电商大促经常出现的神券,可以限制账户等级>3、年度内购物次数>2才能领取等等。
◆ APP版本限制:定义哪些APP版本能参与,比如:拉新活动要求必须使用最新版APP注册才给奖励。
◆ 参与次数限制:明确定义账户级、设备级、实名信息级能参与活动的上限和参与活动的频率等。
c)身份核验
身份核验主要是为了确保是用户自己来参与活动,主要手段包括:手机短信校验;验证码校验;密码校验;密保问题校验;本机校验:校验手机号对应的SIM卡是否在当前设备中使用;实名认证,有三种:身份证OCR校验,身份证OCR、人脸校验,身份证OCR、活体检测;个人信息。
6.2 事中检测处置
事中检测主要依赖人机识别、风控引擎、风险处置三个手段。
a)人机识别
人机识别主要区分是人,还是机器自动化的行为。客户端与后端的数据交互过程中,增加如下的数据保护手段,一旦发现数据有问题,则都是机器行为。数据合法性校验;数据加解密;数据篡改检测。
b)风控引擎
事中检测的核心工具就是风控引擎,风控引擎主要的工作是识别风险,一般的风控引擎都需要如下几个功能:
◆ 名单服务:建立黑、白、灰名单;
◆ 画像服务:建立基于IP、手机号、账户等层级的画像服务;
◆ 指标计算:一般包括高频类统计、求和、计数、求平均值、求最大值、求最小值等等;
◆ 风控模型:基于采集到的数据,建立风控模型,比如:设备模型、行为模型、业务模型等;
◆ 规则引擎:最终的风控数据进入规则引擎,由规则引擎判断是否存在风险。
风控运营需基于业务建立各种风控规则,以识别风险。
c)风险处置
识别到风险之后,需要对风控进行处置,处置手段一般有:
◆ 二次校验:比如,正常用户无需二次校验,有风险的用户需再次校验手机短信等;
◆ 拦截:拒绝当前业务操作;
◆ 降低奖励:比如,正常用户的奖励金是1元,风险用户奖励金是0.01元;
◆ 拉黑:直接进黑名单;
◆ 名单监控:进灰名单监控;
◆ 风险审核:进入人工审核,比如:电商场景的订单业务,一般嫌疑类风险订单,都会安排人工审核。
6.3 事后分析回馈
事后主要是做离线分析,分析结果可作用于事中实时检测和事前预防。对于T+N的业务(比如:拉新奖励金提现),离线分析之后,若识别出风险,也可以做拦截(拒绝此次提现)。
离线分析主要有几个方面:
◆ 离线指标:基于长周期、大数据的离线指标计算;
◆ 关联分析:基于前后关联业务、关联数据做关联分析,识别风险用户、风险操作;
◆ 复杂网络:基于用户数据、设备数据、网络数据、业务数据,建立复杂关系网络,基于数据与数据之间的关系,来识别风险;
◆ 模型训练:基于机器学习、深度学习技术来构建业务模型、设备模型、行为模型,或文本类模型(异常地址检测、异常昵称检测)等;
◆ 名单库:通过离线分析,积累、沉淀各种名单库;
◆ 数据画像:基于离线分析,对账户、IP、设备、手机号等构建数据画像。
6.4 全链路布控
全链路风控解决方案另一个非常重要的过程是:全链路布控。若只是构建了全链路风控模型(工具),未做全链路部署,那也是大材小用。
全链路布控主要要做到:
◆ 多业务布防:在业务的各个环节都需布控防刷手段,一般的营销活动都需先注册、登录,再参与营销活动。所以,可以在注册、登录、营销活动各个环境都布控风控检测。
◆ 联防联控:前置业务为后置业务产出事前特征,避免后置业务风控检测冷启动;后置业务为前置业务提供事后特征,比如:准实时、中长周期的风险特征。
6.5 第三方解决方案的弊端
第三方解决方案的弊端就是对系统的侵入,需要我们在自己的系统里嵌入许多外部代码。带来的风险就是,系统数据全部开放给外部,用户数据风险,业务经营数据风险,系统可用性风险等。
一旦外部系统出现问题,可能导致我们自己的系统不可用,或者数据泄漏。如果不能接受这一点,或者无法信任第三方,或者公司政策不允许,那就无法使用这种服务。
四、总结
最后,我综合总结一下全文的梗概,如果前面都没仔细看的话,那么只看这里就可以了。
1. 适用范围
主要针对自动化薅羊毛的防御。
2. 业务逻辑设计
拉新活动要小心(拉新送、注册送、关注送、新用户立减、日常打卡、签到、获得积分、积分兑换、抽奖)。
3. 系统设计
- 接入层:Nginx,限制频率,IP 黑名单(代理IP识别);
- 应用层:redis,漏桶,令牌桶算法;
- 接口层:访问控制,防重入 token(token是用户一次操作的唯一标识),模糊的响应迷惑恶意请求;
- 业务层:验证码,黑/白名单机制(大数据),设备指纹,行为数据,全链路布控;
- 界面层:提高破解门槛,防自动化(按键精灵等);
- 数据分析:分析历史作弊数据,优化活动奖励,采用堵不如疏的策略,与其强硬的一刀切,不如提升攻击成本,减少获利;机器学习,大数据反作弊平台,GCN、Node2V、Louvain、GAN、GBS、LSTM等模型,我也看不懂了。
以上,就是防范羊毛党相关技术的全部内容,建议收藏。最后,我们再回顾一下文章脉络:
五、Q & A
Q:
要不要使用第三方风控服务?
A:
这完全取决于你所在公司或业务的状况,包括对数据风险的容忍度、系统对接的难度、费用问题、招标等等。具体情况具体分析了。
Q:
被拒绝的用户的体验是怎样的?
A:
这里可以适当柔性处理,如果不确定是否恶意用户,可以做隐性的限制,再根据后续行为继续观察打标。对于恶意刷接口、刷票等,也可以返回具有迷惑性的错误提示,避免羊毛党猜到系统判断逻辑。
比如,我就遇到过刷票接口,使用技术手段尝试,每次都返回投票成功,但实际并没有,你也不知道为啥,因为没有特定的错误码和提示。
Q:
限制自动化有具体的例子吗?
A:
微信 PC 客户端就是个很好的例子。你可以用按键精灵或者 autoit 之类的软件尝试,会发现它的窗口是捕获不到的,所以就很难编写自动化脚本。不过,在安卓下面由于系统可以高度定制,所以这都不是问题了。
参考文献:
《全链路风控解决方案深度解读》
《文档中心——天御业务安全防护》
作者:姬小光
微信公众号:姬小光(ID:hi-laser)