拒绝羊毛党:运营同学必看的防薅羊毛技术完全解读

13 评论 33551 浏览 200 收藏 28 分钟

本文旨在对防范羊毛党的技术做个科普,让大家知道羊毛党到底是怎么薅的,有哪些方法可以杜绝羊毛党的薅羊毛行为。enjoy~

薅羊毛这三个字大家都非常熟悉了,而现在的薅羊毛主要发生在互联网上,尤其集中在电商平台、P2P网贷平台等。

无利不起早,正式因为这些平台有明显的利益可图,所以即使需要耗费很大的精力,也有很多人乐此不疲。大家可以搜到,网上有各种薅羊毛信息发布网站,还有许多有组织的薅羊毛群体,这背后是非常大的产业。

正因为羊毛党之多,斗争困难,很多网站和商家对此都很痛苦,同时又感觉很羊毛党神秘,好像羊毛党有什么深不可测的技术,无力抵抗。

所以本文的目的就是对防范羊毛党的技术做个科普,让大家知道羊毛党到底是怎么薅的,有哪些方法可以杜绝羊毛党的薅羊毛行为。

大家可以先预览一下全文的脉络:

科普 | 拒绝羊毛党:运营同学必看的防薅羊毛技术完全解读

目录:

1. 羊毛党的分类

1.1 刷单刷票类

1.2 任务类

1.3 黄牛党

1.4 黑客类

1.5 漏洞研究类

2. 通过运营手段防范

2.1 用户群体限制

2.2 客户端版本限制

2.3 次数/上限限制

3. 通过技术手段防范

3.1 封禁 IP 或 IP 段

3.2 封禁用户

3.3 增加验证码

3.4 系统限流

3.5 离线数据分析

3.6 综合解决方案

4. 总结

5. Q & A

1. 羊毛党的分类

根据具体薅的方法不同,可以把羊毛党大致分为五类:

1.1 刷单刷票类

这类用户主要靠刷单刷量获取利益,比如淘宝刷单、刷评论等。刷票也算,代刷投票、阅读数、粉丝数等等。

1.2 任务类

顾名思义,很多网站对特定任务会有奖励,比如注册、问卷、绑卡、实名认证等等。有些是消耗时间和注意力,有些干脆是拿自己或别人的信息卖钱。

1.3 黄牛党

黄牛党一般利用信息不对称或者技术优势、人脉优势,可以更早、更快获取信息,也可能是团队合作,共享资源,往往会对某些稀缺资源进行垄断,然后再高价转手获利。比如多火车汽车票,有现场排队的黄牛,也有互联网上的黄牛。

1.4 黑客类

如果论技术,这些人也未必称得上黑客。但是特点还是利用技术手段找到平台安全漏洞,获取利益。如果无节制,直接把羊薅死也不一定。比如积分商城的商品、抽奖的现金、优惠券代金券等等。或者直接爆库,转卖用户数据等。这一类基本都是违法行为,是要追究法律责任的。

1.5 漏洞研究类

这类用户主要研究活动规则的漏洞,也可能加上一点技术手段。跟黑客的区别就是,系统可能没有漏洞,只是没有做好防薅的工作而已。或者是活动规则设计不健全,使之有利可图,比如信用卡养卡。当然,养卡这种还有深层次原因,平台也需要这些活跃用户,这种算是互赖型的薅羊毛。

如果再抽象一点,可以分成手动和自动两大类。手动的薅羊毛,即人肉薅羊毛,靠各种群集合起来,有羊头组织和派发任务,其他人只要抽出些碎片时间参与即可。自动的就是要建立一套程序,在特定活动时开启,或者针对某些平台长期运行。

本文主要讨论如何防范自动化的薅羊毛,因为除了黑客之外,这种羊毛党危害最大。而防范黑客的话题太大,也没有什么固定的解决方案,讨论也没啥用。而对于人肉薅羊毛,做任务、刷单等,目前也没有太好的办法,毕竟都是真实的用户,除非有明确的行为数据模型可以命中,否则只能当做正常用户。这个后面会提到。

2. 通过运营手段防范

我们都知道羊毛党的危害非常大,尤其对于运营活动来说,最常导致的问题就是运营成本失控、数据样本失真、垃圾账号混淆、公正性失信等等。其中运营成本失控,如果把握不好,拖垮公司都是有可能的。而数据统计的失真,也导致无法清晰判断后续的运营策略。羊毛党的蜂拥而至,也会降低真实用户的积极性这忠诚度,榨干平台。

要想防范羊毛党,最主要的还是控制利益的诱惑,避免直接利益,比如红包话费等。而对于优惠券之类,用户需要购买才能使用的,诱惑就没那么大了。除非是五折以上或者是大额现金券。此外,购物也需要填写明确的收货地址及其他个人信息,羊毛党会相对谨慎一些。

因此,在制定营销活动时,必须制定完备的业务规则,必须要有相应的活动门槛和限制,例如:

2.1 用户群体限制

定义哪些类型的用户能参与活动,指定清晰的分界线。对于特定的活动,可以适当提高参与门槛,比如 V2 以上会员可以参与,有过购买记录的可以参与等等。这种主要针对特定群体会员做运营,对于被排除在外的用户,体验就没那么好了。

科普 | 拒绝羊毛党:运营同学必看的防薅羊毛技术完全解读

科普 | 拒绝羊毛党:运营同学必看的防薅羊毛技术完全解读

2.2 客户端版本限制

定义哪些 APP 或小程序版本能参与,比如:拉新活动要求必须使用最新版 APP 注册才给奖励。

2.3 次数/上限限制

明确定义账户级、设备级、实名信息级能参与活动的上限和参与活动的频率等。活动给用户的预期要控制在合理的范围,并且控制上限,才能有效防范羊毛党。比如每个账号的上限,每日活动预算的上限。活动规则中也要明确说明,如果发现有人通过刷单刷票等形式违规操作,平台有权取消其参与资格或相应奖励。这样对于异步发放的奖品,也可以在发放之前检查一下数据,筛掉可疑用户。

最后,对于所有活动的数据,在开发之前就要明确提出需要监测哪些数据。不然活动都已经跑起来了,没有预先埋点的东西肯定是拿不到的。作为运营对数据一定要极其敏感,如果有暴增的用户量或者参与量,就要小心是不是有羊毛党来袭,而不是光顾着乐。

3. 通过技术手段防范

我们可以先简单看一下腾讯云的防刷接口对风险类型的定义:

科普 | 拒绝羊毛党:运营同学必看的防薅羊毛技术完全解读

通过技术手段薅羊毛,最常见的就是高频刷接口,恶意注册账号,撞库等。而这类羊毛党,一般会大量养卡,或有很多虚拟的打码平台,可以提供手机号+验证码服务。有的可能还会拥有大量动态IP地址,海外服务器,以及批量的身份证等。还有专业的设备,称作“猫池”、“卡池”。对于移动端的业务,许多这类公司还购入大量实体手机,再通过软件批量控制,称为“群控”,这个我在《微信里的赚钱路子》文章里提到过。对于这种羊毛党和黑灰产,传统的防护手段一般有三种:封IP,封用户,增加验证码。下面分别进行讲解。

3.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 段。

3.2 封禁用户

我们可以根据某些特定的规则,筛选识别出一批用户,对其进行一些限制。可以采用黑名单机制,或者用户风险分级、信用分级等等。然后再根据黑/白名单,或用户等级限制特定的行为,比如完全拒绝服务、限制某些功能、限制大奖等等。

封禁用户的标记有很多种,最基本的如果用户有登录态的话,就可以直接封账号。如果没有的话,可以通过设备指纹来标识设备,根据平台的不同,设备指纹可以是 PC 端的浏览器指纹,移动端的 IMEI、MAC 地址、UUID 等,或者这些条件综合起来计算出来的 machine key,使之无法造假,然后在关键请求时校验 machine key 的合法性。

网络环境也是个因素,WIFI 和 4G 的切换,或者网络 IP 的变化,都可以是拒绝服务的理由。这种在银行 APP 中最常见,如果切换了网络,银行 APP 一般会要求重新验证身份才能继续操作。然而,目前市面上已经出现了各种改机软件和模拟器,能不断修改设备信息,让一般的设备指纹失去作用。

这种方式的风险就是,规则要慢慢养成,过程中必然有遗漏和误杀,操作不当可能会引起大量投诉。所以这种方式最好是宽进严出,默认用户都是好的,再慢慢收紧,识别出明确的恶意用户。对于可疑但不确定的用户,可以先标记等级,再针对这些等级单独观察后续行为后,对其进行等级的升降。然后针对不同等级限制行为。

关于羊毛用户的识别标记,可以是基本数据是否健全,比如资料是否完整,是否有真实可信的昵称,手机号等;行为数据,如鼠标点击、鼠标移动、按键次数,每次打卡是否固定时间等等;更高级一点的,可以实施全路径实时布控策略,从 APP 启动、账号注册、登录,到业务场景(如直播热度/电商销量排行等),再到设备风险(篡改、虚拟机、设备农场、积分墙等)设下层层关卡,全栈式防御欺诈行为。

3.3 增加验证码

验证码有很多种,往往加在重要操作流程中,比如注册/登录/绑卡/支付等环节,大家应该都体验过五花八门的验证码。比如注册用户时的拼图滑块、Google 的 I’m not robot、手机验证码、图片验证码等等。

第三方授权的功能也是一道天然屏障,比如微信授权、QQ登录授权,这样恶意用户需要先经过第三方验证一道,起码在访问频率和账号真实性上多了一道屏障。如果业务允许的话,还可以要求用户进行实名认证,密保问题校验等等。当然,步骤越多体验就越差。

验证码的主要作用就是区分操作者到底是人还是机器。但是不同的验证码难度千差万别,普通的手机验证码,有专门的打码平台可以提供 手机号+验证码 服务,而且都是程序对接,自动化执行。而对于一般的图片验证码,也有很多公开的图片验证码识别服务。因此才会导致各个平台的验证码越做越复杂,到了人类都很难辨认的程度,体验很差。

3.4 系统限流

限流只能一定程度上缓解,或者说让风险可控。主要是防止恶意请求流量、恶意攻击,或者防止流量超出系统的峰值,破坏系统。前面第 1 小点封禁 IP 也可以理解为限流的一种,在接入层直接拒绝,对于系统资源的损耗最小。而对于网络流量,可以使用 Nginx 的 limit 模块进行限制,防止过大的流量穿透到后端应用。

常用的限流算法有两种:令牌桶算法,漏桶算法。令牌桶算法,是一个存放固定容量令牌的桶,单位时间内,拿到令牌的才能通过,多余的不派发令牌;漏桶算法则是单位时间内流出的数量固定,流入无所谓。那么无论对于网络请求的数据量,还是用户新增的数量,奖品发放的数量,都可以使用这两种思路进行限制。这里是系统架构的知识,不再赘述。

3.5 离线数据分析

如果活动已经在进行,或者活动已经结束,但是总感觉不对劲,这时候就要采用离线数据分析的方法,仔细辨别是否有羊毛党的存在。那么数据从哪里来呢?

前面提过,除了活动必须的数据之外,如果想更深入地分析用户行为,那么在需求设计阶段就要想好,希望记录哪些行为,便于后续分析。如果系统没有提供这些能力,显然也没有相关的数据可以分析了。

3.6 综合解决方案

完整风控解决方案,不仅要考虑用户体验,同时又要兼顾效果,需要考虑很多方面。因此有很多大小公司都专门提供了这方面的解决方案。比如腾讯、阿里、网易等等,此外还有许多提供这种业务的公司,搜索“防薅羊毛”就会出现很多。这些解决方案的基本原理与上述技术无异,只是数据基数更大,再加上机器学习和大数据分析,可以更加准确识别出恶意用户和黑产用户。

以下内容(3.6.1 – 3.6.4)来自网易易盾《全链路风控解决方案深度解读》中提到的风控服务,不代表本人观点,仅供参考,文末参考文献中有文章链接,感兴趣的同学可以前往查看。

事前预防:通过数据采集收集用户侧信息、通过业务规则来限定参与活动的门槛、通过身份核验来确认用户身份等手段,防止风险事件的发生。

事中检测处置:通过实时在线的手段来检测风险,并做相应的风险处置,防止风险事件的发生。

事后分析回馈:基于长周期的离线数据分析,计算用户侧、设备侧、IP侧、业务侧的各种风险特征,并作用于事前风控和事中风控。

3.6.1 事前预防

事前预防主要有三个层面的事项:数据采集、业务规则、身份核验。

a)数据采集

在业务活动的各个阶段,都需要埋点采集数据,主要有设备指纹、操作行为、网络数据、业务数据、第三方数据等。采集的数据主要用于事中的风险监测和事后的离线分析。

b)业务规则

在制定营销活动时,必须制定完备的业务规则,必须要有相应的活动门槛和限制,例如:

  • 用户群体限制:定义哪些类型的用户能参与活动,指定清晰的分界线。比如:电商大促经常出现的神券,可以限制账户等级>3、年度内购物次数>2才能领取等等。
  • APP版本限制:定义哪些APP版本能参与,比如:拉新活动要求必须使用最新版APP注册才给奖励。
  • 参与次数限制:明确定义账户级、设备级、实名信息级能参与活动的上限和参与活动的频率等。

c)身份核验

身份核验主要是为了确保是用户自己来参与活动,主要手段包括:手机短信校验;验证码校验;密码校验;密保问题校验;本机校验:校验手机号对应的SIM卡是否在当前设备中使用;实名认证,有三种:1)身份证OCR校验;2)身份证OCR、人脸校验;3)身份证OCR、活体检测;个人信息。

3.6.2 事中检测处置

事中检测主要依赖人机识别、风控引擎、风险处置三个手段。

a)人机识别

人机识别主要区分是人,还是机器自动化的行为。客户端与后端的数据交互过程中,增加如下的数据保护手段,一旦发现数据有问题,则都是机器行为。数据合法性校验;数据加解密;数据篡改检测。

b)风控引擎

事中检测的核心工具就是风控引擎,风控引擎主要的工作是识别风险,一般的风控引擎都需要如下几个功能:

  • 名单服务:建立黑、白、灰名单;
  • 画像服务:建立基于IP、手机号、账户等层级的画像服务;
  • 指标计算:一般包括高频类统计、求和、计数、求平均值、求最大值、求最小值等等;
  • 风控模型:基于采集到的数据,建立风控模型,比如:设备模型、行为模型、业务模型等;
  • 规则引擎:最终的风控数据进入规则引擎,由规则引擎判断是否存在风险。风控运营需基于业务建立各种风控规则,以识别风险。

c)风险处置

识别到风险之后,需要对风控进行处置,处置手段一般有:

  • 二次校验:比如,正常用户无需二次校验,有风险的用户需再次校验手机短信等;
  • 拦截:拒绝当前业务操作;
  • 降低奖励:比如,正常用户的奖励金是1元,风险用户奖励金是0.01元;
  • 拉黑:直接进黑名单;
  • 名单监控:进灰名单监控;
  • 风险审核:进入人工审核,比如:电商场景的订单业务,一般嫌疑类风险订单,都会安排人工审核。

3.6.3 事后分析回馈

事后主要是做离线分析,分析结果可作用于事中实时检测和事前预防。对于T+N的业务(比如:拉新奖励金提现),离线分析之后,若识别出风险,也可以做拦截(拒绝此次提现)。

离线分析主要有几个方面:

  • 离线指标:基于长周期、大数据的离线指标计算;
  • 关联分析:基于前后关联业务、关联数据做关联分析,识别风险用户、风险操作;
  • 复杂网络:基于用户数据、设备数据、网络数据、业务数据,建立复杂关系网络,基于数据与数据之间的关系,来识别风险;
  • 模型训练:基于机器学习、深度学习技术来构建业务模型、设备模型、行为模型,或文本类模型(异常地址检测、异常昵称检测)等;
  • 名单库:通过离线分析,积累、沉淀各种名单库;
  • 数据画像:基于离线分析,对账户、IP、设备、手机号等构建数据画像。

3.6.4 全链路布控

全链路风控解决方案另一个非常重要的过程是:全链路布控。若只是构建了全链路风控模型(工具),未做全链路部署,那也是大材小用。

全链路布控主要要做到:

多业务布防:在业务的各个环节都需布控防刷手段,一般的营销活动都需先注册、登录,再参与营销活动。所以,可以在注册、登录、营销活动各个环境都布控风控检测。

联防联控:前置业务为后置业务产出事前特征,避免后置业务风控检测冷启动;后置业务为前置业务提供事后特征,比如:准实时、中长周期的风险特征。

3.6.5 第三方解决方案的弊端

第三方解决方案的弊端就是对系统的侵入,需要我们在自己的系统里嵌入许多外部代码。那么带来的风险就是,系统数据全部开放给外部,用户数据风险,业务经营数据风险,系统可用性风险等。一旦外部系统出现问题,可能导致我们自己的系统不可用,或者数据泄漏。如果不能接受这一点,或者无法信任第三方,或者公司政策不允许,那就无法使用这种服务。

4. 总结

最后,我综合总结一下全文的梗概,如果前面都没仔细看的话,那么只看这里就可以了。

(1)适用范围

主要针对自动化薅羊毛的防御。

(2)业务逻辑设计

拉新活动要小心(拉新送、注册送、关注送、新用户立减、日常打卡、签到、获得积分、积分兑换、抽奖)。

(3)系统设计

接入层:Nginx,限制频率,IP 黑名单(代理IP识别);

应用层:redis,漏桶,令牌桶算法;

接口层:访问控制,防重入 token(token是用户一次操作的唯一标识),模糊的响应迷惑恶意请求;

业务层:验证码,黑/白名单机制(大数据),设备指纹,行为数据,全链路布控;

界面层:提高破解门槛,防自动化(按键精灵等);

数据分析:分析历史作弊数据,优化活动奖励,采用堵不如疏的策略,与其强硬的一刀切,不如提升攻击成本,减少获利;机器学习,大数据反作弊平台,GCN、Node2V、Louvain、GAN、GBS、LSTM等模型,我也看不懂了~

以上,就是防范羊毛党相关技术的全部内容,建议收藏。最后,我们再回顾一下文章脉络:

科普 | 拒绝羊毛党:运营同学必看的防薅羊毛技术完全解读

5. Q & A

问:要不要使用第三方风控服务?

答:这完全取决于你所在公司或业务的状况,包括对数据风险的容忍度、系统对接的难度、费用问题、招标等等。具体情况具体分析了。

问:被拒绝的用户的体验是怎样的?

答:这里可以适当柔性处理,如果不确定是否恶意用户,可以做隐性的限制,再根据后续行为继续观察打标。对于恶意刷接口、刷票等,也可以返回具有迷惑性的错误提示,避免羊毛党猜到系统判断逻辑。比如我就遇到过刷票接口,使用技术手段尝试,每次都返回投票成功,但实际并没有,你也不知道为啥,因为没有特定的错误码和提示。别问我为什么知道。

问:限制自动化有具体的例子吗?

答:微信 PC 客户端就是个很好的例子。你可以用按键精灵或者 autoit 之类的软件尝试,会发现它的窗口是捕获不到的,所以就很难编写自动化脚本。不过,在安卓下面由于系统可以高度定制,所以这都不是问题了。

好了,如有大家还有其他任何疑问,欢迎随时留言与我沟通。

参考文献:

全链路风控解决方案深度解读

文档中心 – 天御业务安全防护

 

作者:姬小光,微信公众号“姬小光(ID:hi-laser)”

本文由 @姬小光 原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 暂时还看不懂,收藏一个~

    来自美国 回复
  2. 全链路风控解决方案深度解读,貌似链接看不到了

    来自广东 回复
  3. 刚好再找张方面的资料,感谢感谢分享

    回复
  4. 你好,我是你的粉丝,一直都有在看你发表的文章,非常的喜欢,不知道方便留一下的VX吗? 😉

    来自福建 回复
  5. 我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦我我你摸摸摸摸摸摸默默哦哦哦

    回复
    1. 抱歉,我以为会有删除。想看看300字有多长

      回复
  6. 怎么还有错别字…

    回复
  7. 现在银联云闪付和招行掌上生活这类大厂APP某些运营活动主要就是给羊毛党用的,作者能否解释一下,因为APP也需要他们来展示活动的活跃度

    来自上海 回复
    1. 目的不一样。羊毛党并非全无作用,在风险可控的情况下,羊毛党可以起到很好的活跃和传播作用

      来自广东 回复
  8. 学习了~

    来自上海 回复
  9. 很专业

    来自广东 回复
  10. 很有意思

    来自北京 回复
    1. 😆

      来自广东 回复