反作弊的一些策略
作弊本质上是一种恶意地使用正常功能,从而获取不正当价值的行为。这里面有3个关键词。
恶意:作弊者明知道该行为不正当、不应该、不符合产品本身的道德规范或使用章程,仍继续进行。
正常功能:作弊使用的产品的正常功能,与黑客行为不同。
价值:作弊的目的是为了价值,包括金钱、积分、流量、名誉等等多种形式。
反作弊的终极目标当然是杜绝一切作弊行为,但这个目标遥不可及。现实中,我更倾向于将目标确定为——通过不断提高作弊门槛,增加作弊成本从而压缩作弊利润空间,最终导致作弊团队主动放弃。
反作弊的关键性指标有几类。
召回率,即平台上共有1000次作弊,我们能识别出几次。
误伤率,即我们认为有1000次作弊,其中有多少次好人被误伤。
对业务的影响情况,根据业务的不同,可采用不同的具体指标。比如僵尸帐号抽奖,可定为僵尸帐号中奖率。比如垃圾广告,可定为垃圾广告的PV/UV。
工作室价格和服务承诺。查询黑产中在自己平台作弊的价格和服务承诺,侧面反映反作弊成果。
对应的反作弊总体上有两个大的方向。
首先是优化产品方案,减少可用来作弊的空间。比如知乎回答的排序,不单纯以人头计算,而是要计算上不同用户的权重。
其次是搭建反作弊服务,计算出一个行为是作弊行为的概率,并根据结果采用不同的产品策略。这里面还可以细分成两个方向,一个是反作弊引擎本身的搭建,另一个是反作弊结果在业务中的落地,如降权、限流、封停、禁言等。
第一个方向上,业务不同,产品不同,优化的方式也都不同,因地制宜就好。关键是平衡好反作弊与业务发展之间的矛盾。
第二个方向上,识别反作弊还可以再分成两个思路,通过信息识别 和 通过行为识别。
1、信息识别
通过信息识别的核心思路是建立信息的黑白名单,通过对比黑白名单的方式识别作弊。
黑名单可以是具体的信息。最容易想到的就是敏感词库了。还可以是已知被用来作弊的手机号、符合特定规律的邮箱名、免费代理服务器的IP、赌博网站的链接、有黑历史的支付帐号/收货地址等。
黑名单还可以是特征。如是否包含QQ号码、是否使用特殊符号来传达QQ号码、头像是否是美女、收货地址与访问IP地址不一致等。
反过来还有白名单。如是否经过认证、操作前是否人脸识别等。
黑白名单的另一个问题就是名单本身如何更新。最简单的就是人工更新,其次还可以通过算法和策略,从已知的作弊行为中抽取。比如从第三方持续获取IP属性库,从已知垃圾广告中抽取广告品牌关键词,从已知作弊帐号中提炼特殊规则的邮箱等。
2、行为识别
通过行为识别本质上就是在算机器与人的不同。
如计算行为的频率。正常人分钟发1条消息,作弊帐号一分钟发100条。
如计算行为的比例。正常人看100个回答才发1条评论,作弊帐号看一个回答就发评论。
如计算行为的模式。正常人看的内容会有一定的倾向性,作弊帐号啥都看。
如计算行为的分布。正常人是上下班路上刷微博,作弊帐号半夜刷。
再进一步甚至能识别,同一个帐号前后是否是同一个人使用,用来应对养号的情况。
上面的计算是基于单个帐号或单个行为,我们还可以做横向比对。如同一个IP上短时间内出现大量评论,同一个城市里产生大批量退单,同一个回答短时间内被一堆小号点赞等。
对了,上面反复提到“短时间”这个词,理由很简单,时间成本也是成本。提高工作室的时间成本也会压缩他们的获利空间。类似的还有设备成本。
3、反作弊服务的其他细节
反作弊服务的核心是计算,计算的核心是数据和效率。
数据方面还可以细分为如何挖掘并采集更有效的数据维度,如何让数据更精准和更及时等。
效率方面,一方面是如何更高效地计算,另一方面是如何更有效地分配计算资源。计算资源永远是不足的,通过配置不同的规则,实现 长期大数据慢计算 和 小范围新数据快计算 两开花才是正道。
此外,数据计算输出的应该是一个分块、分级的结果。分块是指IP的可靠性、帐号的可靠性等。分级是指黑白灰多级可信度。
机器学习时要考虑可解释性,方便对外输出或者人工干预。
4、监控
反作弊的第一步是发现问题,对应的是报警服务;反作弊的最后一步是数据验证,对应的是统计服务。甚至这两部分可能还要比反作弊服务更早完成。
5、结尾
除了上面提到的思路之外,还有一些不成体系的办法。比如信任/不信任扩散模型,举报审核机制、社区自愿者组织、用户信心建设等。反作弊的手段不是孤立存在,需要搭配使用。
最后,反作弊本身的框架并不复杂,但很碎,而且每一个细节的能力建设都需要大量的投入。要投入多少资源,想做到什么效果,算好投入产出之间的账最关键。