CPC作弊与反作弊分析

  点击是用户在使用互联网过程中最频繁的操作之一,用户通过点击一个跳转链接来访问非当前页面的网络资源。在广告行业,每点击扣费(Cost Per Click)是一种很常见且受欢迎的计费模式。

在Wikipedia中,对CPC做了如下定义:

Pay-per-click (PPC), also known as cost per click (CPC), is an internet advertising model used to direct traffic to websites, in which an advertiser pays a publisher (typically a website owner or a network of websites) when the ad is clicked.

  在这种模式中,会有三种角色参与其中:广告内容提供者(广告主)、广告内容发布平台、广告内容受众群体。受众群体点击了某个跳转链接(广告),广告主则向发布平台支付该次点击的费用,而发布平台则需要保证广告主的内容在预算一定的情况下可以得到最大范围的传播和宣传。

什么是网络点击作弊(Click fraud)

Click fraud is a type of fraud that occurs on the Internet in pay-per-click (PPC) online advertising. In this type of advertising, the owners of websites that post the ads are paid an amount of money determined by how many visitors to the sites click on the ads. Fraud occurs when a person, automated script or computer program imitates a legitimate user of a web browser, clicking on such an ad without having an actual interest in the target of the ad’s link. Click fraud is the subject of some controversy and increasing litigation due to the advertising networks being a key beneficiary of the fraud.

  点击作弊通常带有一定的金钱目的或者商业竞争目的。作弊者通过一定的不正当的技术手段对网络广告进行大量的恶意点击,而这些点击通常都是无效点击。比较明显的例子就是广告内容发布平台通过点击其平台上的广告来向广告主收取点击费用,或者广告主的同行业竞争者通过点击对方的广告消耗其广告预算进而实现其广告无法继续展示而使得竞争者可以获得更多的展示资源。这里的无效表示这些点击不代表点击操作发生人(真实用户)的兴趣和关注点,不代表真实用户的实际需求,仅仅是为了迎合某种目的,同时这些点击也不能为广告主带来期望回报和收益,相反还会增加广告主的宣传成本。

  互联网因为其结构的特殊性导致了信任需要通过互联网中每个节点自身保证自身可以被其他节点信任。网络广告也越来越成为最迅速、传播范围最广的广告投放方式之一。网络广告所产生的经济收入逐渐的成为广告行业的重要收入来源和组成部分。而点击作弊的出现会对互联网这个虚拟空间中的相互信任产生很难修复的破坏,成为破坏在线广告生态系统信任度的源泉之一。由此带来了广告主不会再信任并选择互联网平台来发布广告推广自己的产品,广告发布平台不会被得到信任,自身业务和发展受到了限制,相关的技术和理论支撑得不到有效的验证和发展。

谁会从中受益

  如下是前述三种角色的常见出现场景和身份:

角色 场景 身份
广告内容提供者(广告主) 互联网背景 希望可以引入流量的站点拥有者
广告内容提供者(广告主) 电商背景 入驻商家或者企业

  广告内容提供者还可以分为两类,提供者自身和其他竞争者。这两种身份之间在同一个发布平台中存在一种争夺优秀展示位置和机会的竞争关系,因为同一个发布平台中展示效果最优秀的展示位置总是有限的,可是想要占有这个位置的广告主却有很多,都想占据有利的广告展示位置来实现投入和收益最大化。

角色 场景 身份
广告内容发布平台 互联网背景 具有高人气、高流量的网站或者专业平台
广告内容发布平台 电商背景 电商网站平台
角色 场景 身份
广告内容受众群体 互联网背景 任何可上网人群
广告内容受众群体 电商背景 为满足某种购物需求的消费者

  首先,广告内容发布平台是最能从点击作弊中获利的角色。发布平台存在的意义就是为了帮助广告主在对如何做广告投放了解不足的情况下利用自身的优势和专业能力帮助广告主最大范围的投放广告。因为CPC模式的特点决定了不管广告点击是否合法有效,只要产生了点击行为,广告主都要支付相应的费用给发布平台。有时为了产生或者增加这种收益,发布平台自身会利用一些方式方法去执行一些点击操作来向广告主收取广告费用。但是这种收益是一种竭泽而渔的收益,其实已经构成了点击欺诈,由此带来的是发布平台和广告主之间的合作关系被破坏,广告主需要为此承担更多的经济损失。

  其次,广告主的其他竞争者也是点击作弊的获益方。因为优秀的广告展示位置总是有限的,所以其他竞争者通过制造大量点击行为消耗掉广告主的广告预算,增加广告主的广告投放成本,最终让广告主无法继续投放广告。这样其他竞争者相对而言就有了一定的竞争优势可以获得更多的展示机会。

网络点击欺诈作弊的常见形式\手段\特征

作弊方式

人工作弊

  1. 作弊联盟。若干个广告发布平台结成联盟,互相点击联盟中其他成员平台上展示的广告。

  2. 诱骗点击。这种点击也被称为欺诈流量。这种点击通常并不是由点击获益方发起的,更多时候是由真实用户产生并执行的,但是用户并不清楚在这种情况下他们是在执行带有作弊性质的点击行为。广告内容发布平台在设计广告展示时,会通过一些设计和交互手段让用户大概率的产生一些用户关注度很少的点击,尽管这些点击很有可能是用户不想执行的,或者这些广告内容对用户产生了一定的诱导而使用户执行了点击。更有甚者,点击广告是实现用户目的的必要操作之一。

  3. 人海点击。某太祖兔在《论持久战》里说过一句话:让敌人陷入人民战争的汪洋大海。通过雇佣大量的廉价人力,在给予一定酬劳的情况下可以对指定广告内容不停的进行点击操作。这些人力不需要技术门槛,只需要一台可以上网的电脑、手机,按照作弊者编写的操作手册按部就班的执行就可以完成操作。由于这种方法近似等同于真实用户的真实点击,所以对于这种类型的作弊点击区分是否为真实用户还是有困难的。

  4. 代理服务。因为每次请求时服务器都会记录请求的ip地址信息,所以作弊方在通过使用代理服务后可以随时改变自己的ip地址。这样的一个结果就是每次点击都是同一个人,在同一台电脑上完成的,而服务器会认为发过来的每个请求来自于不同的机器,进而不会将这样的点击判定为作弊点击。

  5. 清空cookie。

机器作弊

  1. 使用程序自动重复执行广告的点击过程。

  2. 肉鸡控制。关于肉鸡(Zombie computer)一词,Wikipedia给出了如下定义:

    In computer science, a zombie is a computer connected to the Internet that has been compromised by a hacker, computer virus or trojan horse program and can be used to perform malicious tasks of one sort or another under remote direction. Botnets of zombie computers are often used to spread e-mail spam and launch denial-of-service attacks (DOS attacks). Most owners of “zombie” computers are unaware that their system is being used in this way. Because the owner tends to be unaware, these computers are metaphorically compared to fictional zombies. A coordinated DDoS attack by multiple botnet machines also resembles a “zombie horde attack”, as depicted in fictional zombie films.

  这种作弊方式其实已经超出了点击作弊的范畴了,因为一旦获得了肉鸡资源,可以做的事情就远不止点击作弊这一种了,一个非常普遍的用途就是用来发动DDoS攻击。对于作弊者来说,只需要对肉鸡发出控制指令,之后肉鸡机器便会根据指令去执行广告点击操作。和人海点击类似,这也是一种近似于真实点击的作弊点击,会增加服务端判定这种点击是否合法的难度。

 3. 爬虫程序。一些爬虫程序在抓取页面数据时,可能会不加区分的将CPC广告的数据一并获取,这种情况下当事人有可能其本意并非要参与作弊,只是为了实现其他目的的同时附带性的执行了一些点击操作。

常见现象

  1. 搜索情境下CPC广告关键词数据异常。某个关键词的相关展示数据在排除掉一些当下热点事件因素外与历史同期相比差异比较悬殊时可以推测是被执行了点击作弊。

  2. 同一IP访问。最简单的作弊方式,最容易被发现,但是依旧有大量的使用案例。

  3. 点显比异常。点显比(Click-Through-Rate)过低表示可能点击数过小,说明相关广告信息无法满足用户需求。还有一种可能是展示数过低,表示用户甚至没有多少机会可以看到广告。相反,点显比过高则可以理解成成点击次数的增长速度大于展示次数的增长速度,最终会慢慢趋近于1。这种情况下就意味着有展示必定有点击,然而,这是不正常的,根据Google AdSense的统计,通常情况下的CTR在2%左右。也就是说,平均百次展示才会带来两个点击。

  4. 展示/点击来源不匹配。作弊者为了满足特征(2),会使用代理服务器不停的更换IP地址,这么做虽然避免了特征(2)的检测,但是为带来下面的这个问题。有些广告的展示是基于区域的,可能会在A区域展示的广告在B区域就不会展示,代理服务器会动态更新IP地址的时候可能会产生非A区域的IP地址,那么这种情况下根本就不可能会产生点击结果实际上产生了,那么可以判定这种点击是作弊点击了。

  5. 用户页面停留时间过短。页面停留时间目前通常使用的计算方法是,从用户点击广告链接到达当前页面开始计算,到用户离开当前页面到达下一个页面结束。这段时间正常情况下会由需求转变为寻找和关注,再决定是否有点击的必要。如果时间过短会认为用户在执行了点击操作之后在页面尚未加载完成或者尚未有充足的时间去浏览页面内容就关闭了页面。

  6. 点击坐标分析。包括点击坐标值是否存在大量的相同值,这种情况下需要判定是否为机器作弊。除此之外,可以考虑建议点击坐标分布热图,依靠一些生物特性来协助判定是否存在作弊点击。如果点击偏离热图集中区域过于严重,则需要检测当前点击是否为作为点击了。

  7. 时间先后顺序异常。网页加载时间、用户离开时间、用户进入时间、用户点击时间之间的先后关系判定,时间间隔范围是否有效。

数据分析指标

  可以收集到的一些必要点击属性值(包括但不限于如下):

属性 描述 备注
uuid/guid 用户标识
IP IP地址
refere http请求引用
clicktime 点击时间
click_h 点击坐标 垂直坐标值
click_w 点击坐标 水平坐标值
screen_h 屏幕可视区域高度
screen_w 屏幕可视区域宽度
screen_s 屏幕分辨率色彩度
siteUrl 用户访问地址  

。。。

如何判定网络点击欺诈作弊

单一指标根据阈值判定是否作弊

  最简单的一种判定方法,根据历史经验或者一些得到认可的统计数据设置作弊规则的阈值范围,在获取到点击数据后根据作弊规则和对应阈值判定点击是否正常。如果设计了多条作弊规则,那么依次判定,多个判定结果取或集最终判定点击是否作弊。一些常见的判定如下:

  1. IP判定。判断同一IP连续点击次数和连续点击时间。除此之外,可以根据动态代理生成的IP地址的特点判定当前IP地址是否为代理生成的IP地址,如果是,则可以怀疑该点击有作弊嫌疑,需要进行进一步的判定;

  2. 通过一些软硬件信息判定。诸如网卡MAC地址、硬盘序列号、移动设备的一些唯一序列号都可以用来进行作弊判定。这些信息的特点是很难去频繁修改,因此这些信息可以和用户形成一种稳定的一一对应关系。但是这些信息在web应用上很难获取得到,所以很难在web应用上得到应用;

  3. ……

  显然,这种方法的优点是容易实现,而且逻辑简单。但是这种方法的缺点也很明显,那就是非常容易误判和漏判,产生一种非黑即白的判定结果。举例来说,根据同一IP地址来判定是否作弊这个条规则就不适用于企业局域网。在企业局域网里,所有的局域网成员通过有限的几个公网IP与外界进行联系。这种情况下,尽管是同样的IP地址点击了同一个广告,但实际上是由不同的有真实需求的用户进行了点击操作,这种情况下的点击可以为广告主带来真实的有效收益,所以就不能判定该点击为作弊点击。除此之外,由于作弊者可以利用动态代理去随时改变IP地址,这样会使得IP地址黑名单的命中率不够理想,会导致黑名单内容不断增加,但是命中率却没有随着黑名单的增加而得到提升。

  由于每条指标都有阈值范围,而作弊者会随着作弊判定规则作出一定的改变,所以需要建立一种调节机制来使得阈值可以通过学习历史数据来动态改变进而可以更好的匹配和判定作弊行为。

根据时间差和连续点击次数判定作弊

  一种比较常见的算法是根据浏览时间差和点击次数来判断点击是否生效,在具体的实现中需要依赖历史数据来协助判定点击是否有效。该算法的主要思想是根据两次点击之间的时间差和连续点击次数是否同时满足阈值条件来判定作弊。具体逻辑如下:

  1. 当前用户点击某个广告后记录点击IP、当前点击的时刻信息,根据用户唯一标识获取点击次数和最近一次点击的时刻;

  2. 判断点击次数是否小于设定阈值,如果小于阈值则执行下一步,否则判定最近一次点击和当前点击的时间差是否大于阈值,如果大于阈值则认为点击正常通过判定并将点击次数清0重新计数。如果时间差小于阈值,则认为作弊;

  3. 判定用户在当前页面的停留时间,如果停留时间小于设定阈值,那么认为是用户错点或者是雇佣人力进行的点击,这两种情况都不能判定为正常点击。反之执行作弊判定之后的诸如扣费等后续操作。

  在收到每次点击请求后都需要把响应的点击数据信息保存下来供日后分析使用。这种方法建立在根据IP地址识别用户的基础之上,也就是说这种方法对于IP地址随时变更的情况则基本上无法处理,而会把每个不同的IP地址当做一个不同的用户会执行上述的判断。所以这种方法需要IP地址判定结合在一起公共使用,如果判定当前IP地址是一个正常的IP地址,那么就根据该IP的历史点击次数记录和点击时间差阈值去判定该IP地址发送的点击请求是否正常有效,如果IP地址判定都未通过,那么可以直接认为该点击存在作弊嫌疑。

  还有一些变异方法和这种方法类似,也是基于连续点击次数和点击时间差来判断是否属于正常点击。现有的一些判定方法是计算在设定时间长度范围内同用户(根据IP地址或者UUID/GUID)产生的点击请求数量是否超过阈值来判定是否存在作弊行为。具体做法是在收到点击请求时根据当时时间往前延伸设定的时间长度,并计算这段时间内当前用户的点击记录数,根据记录数和阈值进行比较判定当前点击是否有效。这种做法相对来说更加简单,每次得到点击请求后只需要记录该次点击请求,然后统计设定的时间长度范围内的点击记录数即可判定当前点击请求是否正常。

孤立点检测和贝叶斯分类判定

  在收到用户发出的点击请求之后,首先利用关联聚类建立一个关于当前被点击广告的指定时间段内的疑似点击集合。这个集合中的点击可能是正常用户的真实点击,也可能是作弊者制造的欺诈点击,所以接下来就需要通过孤立点检测和贝叶斯分类分离出其中的作弊点击和有效点击。

  孤立点指的是在一个数据集合中与大多数数据元素差异很大的元素,差异会大到让人难以用正常误差去解释这种差异。基于关联聚类得到的欺诈点击集合可以根据设定的点击属性维度把作弊点击和正常点击分离开来并把作弊点击看做是一种孤立点,然后根据事先设定的孤立点最大数量阈值N排除掉指定阈值数量的点击数据。根据定义的两条记录属性差异度计算公式,可以计算出任意两条点击记录之间的一个属性差异度,然后可以基于任意两个点击数据之间构建出一个相异度矩阵,计算出矩阵中每行相异度大于相异度阈值的数量。将相异度矩阵根据每行超过相异度阈值的记录个数重新排序,排在最前面的被认定为作弊点击的可能性更大。剔除掉排名前K位的孤立点数据,剩下的就构成了一个候选欺诈群组。

  采用孤立点检测方法得到候选欺诈组后,其中的点击记录还是会由欺诈点击和正常点击构成。因此为了提出真正的正常点击、分离出所有的欺诈点击,需要采用贝叶斯分类的方法来判定每个点击是否为作弊点击。贝叶斯公式是概率统计中的应用所观察到的现象对有关概率分布的主观判断(即先验概率)进行修正的标准方法。假设有若干个类,C1,C2,……..Cm,对于指定数据样本X,且所有的类条件独立,贝叶斯分类将判定X属于Ci当且仅当:

      P(Ci|X) > P(Cj|X), 1 ≤ j ≤ m, j ≠ i     (1)

  根据贝叶斯公式:

      P(Ci|X) = P(X|Ci) * P(Ci) / P(X)    (2)

  P(X)对于所有的类都是一个常量,所以只需要计算P(X|Ci) * P(Ci)这个算式的结果即可。由于每条数据样本X(此处为每条点击记录)具有若干个属性值,所以假设各属性值之间相互独立,取值概率不会受到其他属性值的影响也不会影响其他属性值的取值,即给定的样本属性值条件独立,则:

      P(X|Ci) = P(x1, x2……xk|Ci) = P(x1|Ci) × P(x2|Ci) × …… × P(xk|Ci)    (3)

  在公式三中,xk为点击记录样本X中的第k个属性的属性值。

  我们基于一定的训练集可以把点击记录分为两个类别,C1为正常点击,C2为作弊点击。这两个类可分别对应(无先后关系)公式(1)-(3)中Ci和Cj,点击事件样本X中包含的属性可参考但不限于表格数据分析指标中提及的属性。基于训练数据集分别计算点击事件样本X中每个属性值的先验概率,获取乘积计算P(X|Ci)的结果。同一条样本X分别就C1和C2计算其概率值,如果P(C1|X) > P(C2|X),则当前点击样本X可以被认定为一条正常点击,反之则认为是一条作弊点击。

参考文献

  1. 在线广告投放系统及技术的演变
  2. 网络广告中反CPC点击作弊研究
  3. 一种有效预防点击欺诈的算法
  4. 点击欺诈群体检测与发现
  5. Web挖掘在网络广告点击欺诈检测中的应用
  6. Wikipedia


------------- End of this article, thanks! -------------


  版权声明:本文由Nathan R. Lee创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,转载请注明作者及出处。
  本文作者为 Nathan R. Lee
  本文标题为 CPC作弊与反作弊分析
  本文链接为 https://marcuseddie.github.io/2018/CPC-click-fraud-and-anti-fraud.html