在正式介绍十八般武艺之前,我们先来快速过一下广告投放的全过程,看看作弊都可能存在于哪些环节。

广告主与媒体或代理商签订广告合同,约定结算方式并提供广告创意。主要结算方式有:按展示量结算(Cost Per Mille, CPM)和按点击量结算(Cost Per Click, CPC)的手段做为一类;将按转化量结算(Cost Per Action, CPA)和按销售额结算(Cost Per Sale, CPS)。

广告市场中往往有第三方来监测广告效果,保障广告主的投入产出比。如果是CPM/CPC结算的,第三方会在广告展示环节添加检测代码/SDK,随着广告一齐到达用户端;如果是CPS/CPA结算的,第三方会在广告主网站或应用内添加检测代码/SDK,进行效果归因(Attribution)。

媒体展示广告,用户看到广告创意。用户产生广告交互行为(展示、点击、下载和注册等)。在第三方代码的控制下,这些行为连带用户信息一齐被发送到第三方,第三方进行统计。第三方将统计得到的数据报表交给广告主,广告主凭借这份数据与媒体按照指标进行结算。

看起来,广告的逻辑和流程都挺透明公开的,似乎没有什么可以作弊的地方,究竟是哪里出了问题呢?近现代史老师告诉我们,凡是遇到问“根本原因”的选择题,只用在ABCD里找有“资本”字眼的答案即可。

在广告中,要想理清业务的脉络,跟着钱的流向走准没错。以CPM为例,广告主按照第三方提供的曝光数据与媒体进行结算,而第三方的数据来源于用户端接收到的广告展示,广告展示又是通过第三方的检测代码统计来的。从数据到展示,从展示到检测代码。只要检测代码认为广告确实被展示了一次,那么不管该用户是否真的见到了广告,广告主都要为此次曝光付费。所谓作弊,就是一个让代码说谎的手段。那么问题来了,如何能让检测代码说谎呢?这就是咱们要聊的“作弊造假十八式”呀!

作弊手段与广告主要求的KPI有直接关系。从方法论来看,可以将作弊手法分为两类:针对CPM/CPC(记为M)的手段为一类;针对CPA/CPS(记为S)的手段为另一类。

从另一个角度,还可以将广告作弊分为虚假流量作弊(记为N)和流量归因作弊(记为A)。所谓虚假流量,也称为Non-Human Traffic(NHT),指的是广告的展示、点击或转化本身就是伪造出来的;而后者,则是将其他渠道的流量或者自然流量记在自己名下。一般来说,CPA/CPS的广告由于伪造转化的成本较高,多采用归因作弊的思路。

另外,还可以根据作弊的手段,将广告作弊分为机器作弊(记为R)和人工作弊(记为H)。相比之下,机器作弊十足炫酷、易规模化,具有大数据和人工智能的科技感觉;而人工作弊则精巧细致、韵味悠长,让人回忆起故乡醇厚的雾霾味道。

一、直接访问监测代码 (M,N,H)

监测代码是指那些具有客户端信息收集功能的代码。它的主要工作,是将客户端的信息以参数的形式拼凑成URL,并以HTTP请求的方式传给第三方,告知“谁,在什么时候,看到了来自哪个媒体展示的,哪个广告主的广告”。以移动端为例,常见的客户端参数有如下几种(数据来自《中华人民共和国广告行业标准》):

除了这些,常见的需要被收集的参数还有展示广告时间戳、操作系统、浏览器、设备类型、联网方式、APP信息和标准UA信息等。当广告在客户端产生了曝光,监测代码就会记录此次曝光,并采集用户信息,其生成的URL如下所示。除了第一个参数使用“?”连接外,后面参数都用“&”连接。从这段URL中很容易读出几个信息:用户的IP地址是10.26.78.45,使用设备UA是iPhone,IDFA是70E0E6465B7B12C844C63EC681C7507C等。直接对这个URL发起HTTP请求,第三方www.xxxxx.com就可以根据URL,解析出广告、媒体和用户的三方信息,在后台形成日志,作为一次正常的广告曝光。在行业中,常说的“检测代码”指的就是这个检测URL,而非装填URL的代码,本文亦如此。

www.xxxxx.com/imp?CID=ad20&CPID=1321&CRID=20&OS=1&IDFA=70E0E6465B7B12C844C63EC681C7507C&OpenUDID=F1C7976BC455CB548BFC550EB7687F06&IP=10.26.78.45&UA=iPhone;%20CPU%20iPhone%20OS%206_1_2%20like%20Mac%20OS%20X)%20AppleWebKit/536.26%20(KHTML,%20like%20Gecko&TS=1198628984102

既然是个URL,严谨的大数据从业者一定会思考:直接在浏览器地址里输入这段代码,是不是也就在广告主那里记录了一个曝光呢?是的,这就是作弊刷量最朴素的哲学原理。这其实算不上什么武器,只是个玩具,我们借此来说明基础的CPM作弊原理,CPC也是一样一样的啊!

二、服务器刷监测代码 (M,N,R)

靠手工输入监测代码的方式来刷曝光虽然原理上可行,实际生产中则是没有什么卵用的,量太小,不足以产生质的影响。那能不能写一个爬虫程序,自动装填各种参数,自动发起HTTP请求呢?咳咳,你看看,这人要是想学坏,是真容易呀!可以租一些云服务器,把代码都搬到天上去,一键云作弊。

对于服务器刷代码的作弊手段,第三方是蓝瘦香菇的,占用了服务器大量带宽不说,虚假流量的涌入为真实效果的统计也提出了严峻的挑战。当然,服务器刷代码的方法还是有漏洞的:云机房的IP地址大多属于同一IP段,屏蔽掉主要云服务提供商的IP段即可——谁没事吃饱了撑的租了服务器上去看广告呢?

三、客户端刷监测代码 (M,N,R)

用服务器刷监测代码, 虽然简单直接,却在IP和cookie等用户身份统计上很难做到自然。于是,勤劳勇敢的作弊人们又想到了一个新办法,直接在客户端刷监测代码。您觉得访问了一个网页,其实网页上的JS又免费赠送了您好几次浏览,或许还有一次点击。这样一来,从用户行为上就很难找出什么马脚了。

当然, 这样的作弊也不难发现:上次我偶尔看到某汽车网站一次广告投放的用户频次,大多数都在8/16/24/32这些吉利的数字上。这是为什么呢?就是给用户的正常浏览都买一赠七了呗!如何自动化找出这样的作弊呢?我说两个关键词:傅立叶变换、频域,懂的码农自然懂了,不懂得恐怕还要去补习一下《信号与系统》,这超出了本文的范畴。

另外,不论是服务器刷还是客户端刷,在点击环节都会有个破绽:正常用户在点击广告时,自然的点击分布与广告创意有关,而刷的点击要么较为集中,要么均匀散布,并不难以分辨。画个点击热力图,就一目了然了。

四、频繁换用户身份 (M,N,R)

广告投放中的用户身份,不会是email、手机号等PII信息,一般情况下,在web场景下用cookie,在苹果手机原生应用中用IDFA,在安卓手机原生应用中用AndroidID,如果这些都没有,就用FingerPrint(IP + User Agent)。

不论您采用哪种刷量的手段,一般来说都要比较频繁地变更用户身份。否则,在一个cookie身上猛薅羊毛,一个用户有成千上万次展示,一看就知道是假的。因此,频繁换用户身份,是作弊行业的基本功之一,也是反作弊时都应该了解的一点。

这个方式怎么对付呢?对可以选流量的DSP来说,有个简单的办法:凡是第一次看到的cookie或设备,就干脆不要出价了。

不过对供给方产品来说,这个法子就行不通了。但是,供给方有供给方的好处,对于移动上以SDK方式潜入媒体的SSP产品来说,可以拿到很多终端的信息。举个小例子,如果一台手机的电量总是满的,十有八九是有问题的,您明白了么?

五、放iframe造假展示 (M,A.R)

iframe是一个HTML标签,可以在当前页面中插入其他页面的内容,常常被用来作为承载展示广告的载体。iframe有诸多属性可以设置,其中最为广告人喜爱的莫过于宽度width和高度height了。通过对这两个参数的设置,可以将广告尺寸从肉眼可见的220*140变成不可见的1*1。不就改了一个大小嘛,这算什么作弊呢?各位,大小改了之后,虽然你看不见,但检测代码看见了呀,这是一次正常的广告展示,可以向广告主收钱了。可见,作弊者对我们广大用户还是有一颗怜悯之心的:我就挣广告主的钱,向借您一个像素点,广告不会显出来,不影响您正常上网。这不正印证了那句老话嘛:“不打扰,是我的温柔”。

在展示广告中使用iframe的手段进行作弊,广告效果自然是很差的,用户并没有看到宣传,广告主白花花的银子就没了。除了展示广告之外,视频广告也面临着类似的问题。例如,在一些新闻页面,会在一个非常不起眼的位置上播放视频广告,效果也是极差的。

六、肉鸡和Root (M/S,N/A,R)

“肉鸡”是指那些被木马感染,可以被黑客远程控制的机器和设备。一说到黑客,大家可能就觉得“哇噻好厉害”,其实一点都不难。不知道大家有没有听说过“灰鸽子”,某人在小学4年级时是一名script kids,而且还成功的捉到过一只肉鸡。就在要远程登录的一瞬间,肉鸡不见了,应该是被杀毒软件Kill掉了,从此卸甲归田从了良。言归正传,这个鸡呀,噢不,肉鸡,它就是一个正常的用户,可以发起浏览和点击等行为,因为肉鸡的后面是真人。提醒各位,注意上网安全,小心被捉鸡,指不定会点什么乱七八糟的东西呢。

Root是指操作系统中超级管理员权限,当拿到Root权限后,整个系统就是你家,拆了都可以。这里所说的Root访问广告,主要指的是在移动端,某些APP获得了Root权限,就可以在后台静悄悄的进行着各种各样的访问、点击和下载操作,也都是真实的数据。与肉鸡不同的是,肉鸡后面是有真人在操作,而Root更多的是程序在执行,但从效果上来看,都是在用户不知情的情况下,在后台进行着各种各样的广告操作,欺骗第三方检测代码产生真实的用户行为数据。

说到这个Root,可以说是移动时代“效果广告”的神器!去年,有一家中国公司的Root程序甚至惊动了美国FBI,差点被当成窃取美国用户信息的典型而破坏中美友好大业,其实人家只是很单纯地想挣点儿广告费;而另外一家上市公司则收购了业内一家Root变现大师级企业,被他们Root的手机,除了24小时弹广告之外基本上就没啥用了,据说当天就能回本儿,但是用户的留存 就很差了,为啥?连手机都摔了!

七、诱骗用户点击广告 (M,A,R)

诱骗用户点击广告的情况通常发生在BBS中,经常会有广告伪装成帖子,以博人眼球的内容诱骗用户产生点击。在点击之后,就会发生页面跳转或者触发软件的下载,用户很容易中招。除了BBS以外,在有些下载网站中,有很多的“点击下载”,相信各位也都经见过,点击之后指不定就跳到哪里去了,反正我是被带到某特卖网站上转了一圈,看到0.2折的貂绒大衣正准备剁手,才想起来原来我是要下载软件的。

从上述这些CPM/CPC的作弊手段中可以看出,广告作弊的一般思路都是围绕着检测规则而进行的各种Hack,用虚假或低值的流量完成订单,骗取广告主的预算。只要抓住这一本质,广告的作弊手法就不难理清了。至于作弊者的底线是什么,不好意思,恐怕连底裤都不知道是何物。

八、运营商弹窗 (M/S, N, H)

你是否还记得,那飘在电视节目上方的黑框中,治疗狐臭的令狐诊所;

你是否还记得,那杵在电脑右下脚的弹窗里,省钱又省心的掌上营业厅;

你是否还记得,那悬在手机屏幕中,提醒你剩余流量388M的流量球;

如果你还没有忘记,那么恭喜恭喜,至少说明,还有人在惦记着你。

运营商弹窗可能是一直以来让所有人都为之反感,却又无能为力的一种作弊手段。这些广告种类繁多,特点相似,背后主人都是为人民服务的运营商。由于广告植入发生在数据传输层,因此无论你看的是什么节目、浏览的是哪家网站、用的是什么手机,只要连上网络,都将收到来自运营商的爱。

除了这种霸王硬上弓的弹出式劫持,还有一种方式是普通用户根本无感,润物细无声地存在着。比如,媒体在某个位置上展示了一个广告,在网页到用户浏览器的数据链路中,运营商对网页数据进行深度报文解析(Deep Packet Inspection, DPI),用自己的广告覆盖掉媒体的广告,发送给用户。这样,本次媒体广告的曝光机会就被硬生生的掠夺了。这叫抢吗?不,运营商的事情,怎么能叫抢呢。

九、落地页劫持 (S, A, R)

同样是运营商劫持,弹窗还是比较温柔的,它不过是强占了一些曝光机会。在实际的CPS联盟广告中,劫持往往以更加简单凝练的方式进行。什么是CPS联盟呢?以淘宝联盟为例,站长的页面可以用来投放淘宝的广告,当用户点击广告主的广告时, 淘宝在站长页面上的埋点代码会给用户打上一个Cookie,标记该用户是从站长那里来的。如果用户后续产生了购买,淘宝就要按CPS给站长付钱。

什么是运营商的落地页劫持呢?比方说,您打开浏览器访问京东:http://www.jd.com

可是你按下回车的那一刹那,地址栏里的网址却变成了这样:http://www.jd.com?utm_source=ABC

发生了什么?原来是运营商把你的网址替换成了一个广告来源地址,这样一来,你在京东的消费,就记到“ABC”这个渠道头上啦!

用落地页劫持的方法做CPS广告,那真是价格便宜、量又足啊!而且最美妙的是,任你怎样考察后续数据,都发现不了问题:废话,自然流量的质量还能差到哪里去!

说句不客气的话,目前各大电商的CPS联盟中,真实有效的正常流量,我认为占比不超过两成,当然无效流量中并不只是运营商劫持,还有下篇文中的一些奇葩手段。有人可能要问了,既然CPS流量没什么卵用,电商为什么还要做呢?关于这个哲学问题啊,诸位可以深入思考十八式中的最后一种。

针对流量劫持,有什么好办法么?去运营商那里投诉?别逗了。目前比较好的解决方法就是使用HTTPS替换HTTP,对数据进行加密,使得运营商难以解析数据内容。更多的,你永远也叫不醒一个装睡的人。

当然,除了运营商,手机厂商也有能力把其他广告渠道的下载包换成自己应用市场的,这个原理跟落地页劫持一样。唉,不多说了,现在安卓的应用市场,得说是个重灾区,有几家著名的手机厂商也玩这个玩的很high。

留言