百度竞价点击(商盾)研究

今天写个比较详细的说明,也参考了大量这方面的资料进行的总结,算是给大家一个长见识,写的不好的地方,希望大家多多指教!感谢吾爱朋友的支持!

移动广告平台都有各自的检测点击欺诈的机制,通过各种维度(包括IP分析、用户行为习惯分析、系统识别、设备识别、点击激活时间间隔)对欺诈行为进行拦截,帮助广告主过滤可疑流量,为广告投放效果保驾护航。点击欺诈的的方式多种多样。而移动广告平台识别点击欺诈的方法也随着作弊手段的变化而不断发展,已经有几类行之有效的成熟方法。各家网站联盟都积累了大量的相关数据,但是因为数据涉及多个概念层次的维度,所以人工检测基本不可行。应该来说各家移动广告平台公司的作弊识别方法并不相同,而且各公司也不会把自己检测点击欺诈方法的具体细节公布出来。然而,主要的检测点击欺诈的方法无外乎有以下三类:基于规则的识别方法、基于异常值分析的方法和基于分类的方法,下面详细介绍:

  

  1.基于规则的识别方法

 

一个对行业熟悉的移动广告平台对各种作弊手段必然了如指掌,通常能够根据经验设定一些作弊防范规则,比如:同一IP的用户单日点击次数超过多少即可视为作弊;如果某个广告位的点击率突然大幅增加也可能存在作弊;制定防作弊规则的优点是方便,在一定程度上也能起到防范作弊的作用,然而这种方法显得比较片面也不能与时俱进,必须要随时间变化而不断更改。这种基于规则的识别方法相对于其他识别方法来说执行起来要简单很多,而其实这种方法从某种程度上来说也是一种简化了的决策树算法。

  

 2.基于异常值分析的方法

 

 异常值的定义是基于某种度量,其数值明显偏离它(或它们)所属样本的其余观测值,是样本中的个别值。点击欺诈行为即使行为再隐蔽,和普通网民的人工行为还是有相当不同的。在移动广告平台上用来识别点击欺诈的基于异常值分析的方法,根据不同理论的异常值检测方法,可以分成以下几种:

 

 

1基于统计学的异常值检测

  

在统计学中,假设数据集服从正态分布,那些与均值之间的偏差达到或超过3倍标准差的数据对象就可称之为异常值。根据这个定律,可以衍生出一套点击欺诈检测方案。我们对点击率、IP分布、单位时间内的点击次数等这些单个指标都进行分析,根据不同行业类型的广告做了统计分析,如果某个广告在一定时间段内的数据超出标准,即可怀疑点击欺诈。

 

2基于距离和密度的异常值检测                                                

 

 

  基于统计分布的方法有一个缺陷,它只能检测单个变量,即每次检测只能局限于单个指标,此时若采用基于距离和基于密度的方法,就可结合多指标进行分析。我们目前主要是针对点击率、IP分布的方差、单位时间内的点击次数等这些指标做基于距离和密度的异常值检测。

 

 

3  基于分类的方法                                                

 

 

 

  基于分类的方法主要是根据数据挖掘分类算法对历史数据进行模拟,通过构建分类器来对点击行为进行预测。这种方法的需要事先对历史点击行为进行分类,即标注出欺诈的数据。与基于异常值分析的方法相比,分类方法是一种有监督的数据挖掘方法,其检测精度更高。

 

 

 

 常用欺诈检测技术简介

 

 

  1分类算法                                                

 

 

 

分类是一种监督学习,这类学习类似于人类的学习方式,其从过去的经验中获取知识以用于提高解决问题的能力。通过有标注数据建立分类模型,来对未知类数据进行预测分类。分类应用到众多领域:包括文本分类,入侵检测,欺诈检测等。在点击欺诈检测中本文应用到以下分类算法,下面做简单介绍。

 

1逻辑回归算法

 

 

  逻辑回归又称逻辑回归分析,常用于数据挖掘,经济预测,疾病自动诊断等领域,它是一种广义的线性回归分析模型。回归很容易被理解,就相当于y=fB),表明自变量X和因变量Y的关系。最常见的的问题如医生为了判断病人得了什么病,会进行望、闻、问、切,这个过程可以看成回归,其中望闻问切相当于自变量X,是特征,判断病人是否生病就相当于获取因变量Y,即进行分类【241。一般逻辑回归分为三个步骤:1、构造合适预测函数;2、构造损失函数 ;3、想办法得到使损失函数最小并求得回归参数。

 

 

  2朴素贝叶斯分类

 

 

朴素贝叶斯分类是一种十分经典的分类算法,是一种基于统计学的分类方法。它假定数据集中每个属性值在给定类的影响独立于其他属性的值。

 

 

  3决策树算法

决策树算法是从有类标号的训练元组中学习决策树,决策树是一种类似于流程图的树结构,其中每个内部结点(非树叶结点)表示在一个属性上的测试,每个分枝代表该测试的一个输出,而每个树叶结点(终端结点)存放一个类标号。决策树算法在分类、预测等领域。

  4.C4.5算法 

C4.5是一种很经典的决策树分类算法。C4.5由J.Ross Quinlan在ID3算法的基础上提出的。建立决策树一般有两个步骤:生成决策树和对决策树剪枝。ID3算法用信息增益来选择属性,但这样会使选择结果偏向于多值属性。

 5.离群点挖掘算法

离群点挖掘是找出其行为很不同预期对象的过程。这种对象称为离群点或异常点。离群点挖掘被应用到很多领域,例如如故障诊断,入侵检测,信用卡欺诈,垃圾图像检测,电子商务等领域

介绍完上面的算法,下面重点来了!! 

恶意点击广告特征分析

  为了增加点击量,广告发布商会雇佣大量人力物力或者编写点击程序去点击其网站或APP发布的广告,以获取移动广告平台高额广告费分成,一般有两种点击欺诈手段。第一种,最简单的,通过单一手机,模拟器或者程序产生大量点击,这类由于ip地址固定,Agent,广告来源url单一,比较容易检测;第二种,为了躲开简单的检测,广告发布商会使用一些手段伪装他们的点击行为,例如:改变IP地址、用不同的手机去点击广告、利用位置模拟器改变点击广告所产生位置信息等手段,针对这种点击欺诈手段,以广告发布商为研究对象,从多个维度分析,提取多个特征,量化其点击行为,最后进行检测。

在点击欺诈检测中,特征的选取是一个至关重要的过程,直接影响到检测结果的准确率。移动广告平台的服务器里存在着广告的点击日志和广告发布商的信息数据,这些数据被用做原始数据集进行特征提取,一般会包括:点击时间,IP地址,点击广告的id,点击广告的类型,点击的广告发布商的id,点击广告的urI,点击设备型号,点击位置信息等属性。提取特征的过程实际上是在原始数据集的基础上把每个发布商的广告点击的点击行为和模式进行了数值化的量化,合适的特征应该是能够代表和区分广告点击的趋势,为了在原始数据集的属性中提取合适的特征 。

 

  例如:点击率,针对http 的特征,针对agent诈欺击点在存测检能上度程定一在征特些这,等征特的 也存在着两点不足:1、这些特征的提取过程是从基本统计(最大值和平均值)和基于方差的角度提取的特征。随着作弊手段的提升,只是从基本统计和方差的角度提取特征不能够全面的体现作弊者的点击欺诈行为;2、在与时间相关的特征中,单位时间的选取太单一,并不能全面的涵盖点击。针对这两点不足,本文提取特征的过程加入了基于信息熵,基于偏度的特征和一些基于统计的特征,在提取时间相关特征时,选取四个单位时间,分别是每一分钟,每五分钟,每l小时,每六小时。

   综上所述,本文从移动广告平台的角度考虑,检测存在点击欺诈行为的广告发布商(APP开发者或网站主),以广告发布商为研究对象,本文从四个角度提取特征:基本统计特征,基于方差的特征,基于信息熵的特征,基于偏度的特征。下面对各个类别的特征进行介绍:

1基本统计的特征

点击率:点击率是广告的点击次数和展示次数的一个比值。一个APP或网站上广告的点击次数和展示次数都是能记录到的,通常来说,如果不存在点击欺诈,正 常的广告点击率不会太高,通过分析不同时间段的点击率来提取多个特征。

分析不同时间段点击次数的最大值和平均值:每个广告发布商发布广告被点击的总次数是一定的,如果太高,就有存在点击欺诈的嫌疑。通过分析每分钟,每五分钟,每小时,每六小时的点击次数来提取多个特征。

单个IP的点击最大值:统计所有IP地址点击广告发布商广告的次数,找出最大值。如果这个最大值比较大,就有存在点击欺诈的嫌疑。通过分析每分钟,每五分钟,每小时,每六小时的IP点击最大值可以提取到4个特征。

点击次数与独立IP地址的个数的比值:这个比值越偏大,说明有些IP地址点击的次数越多,就有点击欺诈的嫌疑。

  同类Agent的点击最大值:统计所有Agent点击广告的次数,找出最大值。如果这个最大值比较大,就有存在点击欺诈的嫌疑。通过分析每分钟,每五分钟,每小时,每六小时的Agent点击最大值可以提取到4个特征。

点击次数与独立Agent的个数的比值:这个比值越偏大,说明该发布商存在点击欺诈的嫌疑。

分析相同Agent和IP地址的点击次数的平均值和最大值:通过相同Agent和IP地址可以识别一个点击者,如果它的点击次数过高,就可能存在点击欺诈。

除以上特征还可以提取这些特征:每个广告发布商广告被点击的独立IP个数、独立Agent(移动设备型号)个数、Cid(广告id)个数等,一共分析基于统计的特征30个。

恶意点击检测研究

  点击欺诈检测模型主要包括用户身份识别模型、并行欺诈检测模型两个部分组成


    <ignore_js_op>

   (1)用户身份识别模型:指框架中衔接客户端与服务端的平台,该模型通过客户端采集的浏览器指纹和EverCookie信息对用户的身份进行追踪,得到用户的唯一性ID,同时采集客户端其他用于点击欺诈分析所需的数据:。
   
    关于什么是浏览器指纹技术,我之前有介绍,也可以访问:https://blog.csdn.net/luo2424348224/article/details/107599328   这篇文章介绍

    关于什么是EverCookie:Evercookie是一种Javascript API,可在浏览器中生成非常持久的cookie。它的目标是即使删除了标准Cookie,Flash Cookie(本地共享对象或LSO)和其他Cookie,也可以识别客户端。开源地址:https://github.com/samyk/evercookie



   在用户点击广告的过程中,部分恶意用户会在点击广告过程中刻意隐藏或修改自己的身份信息,已达到伪装自己的目的,主要对这些恶意用户的点击欺诈行为进行分析和检测。一个基于浏览器指纹的用户身份识别模型作为检测的基础,结合EverCookie投放技术,对用户身份进行唯一性确定。识别模型主要包含数据采集、浏览器指纹识别、EverCookie投放以及最终身份确定四个部分


    <ignore_js_op>

     (1)浏览器特征:用户在访问网络广告时使用的浏览器配置信息,如插件信息、字体以及屏幕分辨率等一系列特征,不同的用户由于自身的性格、习惯或喜好不同,其使用浏览器呈现不同的特征;
   
     (2)浏览器指纹识别:指根据用户的浏览器特征提取的特征向量,在服务端依据浏览器指纹识别算法对其进行识别,如果匹配到该用户信息,则获取其身份,否则更新其浏览器指纹信息到服务器用户身份库中;

    (3)EverCookie投放:有别于传统的Cookie技术,EverCookie会将服务端指派给用户的身份信息依据不同的机制投放到客户端的多个位置中去,并且能够恢复和重用,保证恶意用户不能轻易地伪造或者删除对其进行的身份定义;


    (4)身份确定:指本文对用户的身份进行的确认,由于用户的身份由浏览器指纹和EverCookie同时决定,因此只有这两个值同时发生变化时,用户的身份才发生变化。


    整个模型的运行流程如下所述:当用户点击发生时,模型客户端的JavaScript代码会读取该用户的浏览器特征参数以及不同存放机制中EverCookie值,作为用户身份识别算法的输入参数;随后进行的身份识别过程主要是根据浏览器特征参数计算得到的浏览器指纹值与EverCookie值相结合,在服务器端的用户身份库中进行匹配的过程;最终由匹配结果决定该用户是否为新用户。

 

  

用户身份识别算法分析

 浏览器指纹和EverCookie是两种用户身份识别技术,本算法设计的用户身份识别过程依赖这两种算法的结合使用:当浏览器指纹更新后,依据EverCookie存放信息对服务端的浏览器指纹库进行恢复:同时,当EverCookie丢失后,依据浏览器指纹信息对EverCookie进行恢复。因此,可以说本算法中的浏览器指纹与EverCookie值是相互对应的,它们共同标示着用户的身份信息,保证算法能够准确地识别用户的点击情况。当一个用户点击广告后,服务器会保留其身份信息,为其指派浏览器指纹值和EverCookie值,这两个值相互对应,并且与用户本地的特征相对应。当用户的本地特征发生改变时,其浏览器指纹值或EverCookie值会随之改变,算法通过其中未发生改变的值恢复另外一个值,以保证用户身份的有效性。

当浏览器特征更新后,浏览器指纹会随之更新,因此无法再匹配到服务端用户信息,但依靠与其绑定的EverCookie值能够将其原指纹恢复。同理,当EverCookie数据丢失后,可通过重新计算浏览器指纹,得到用户身份信息。                         

  

 colorDepth参数:window.screen.colorDepth     通常为:16,24,32
PixelRatio参数:window.devicePixelRatio     通常为:1-3随机数,可以浮点数
hardwareConcurrency参数:navigator.hardwareConcurrency  通常:1-16随机整数
timezone参数:getTimezoneOffset()   通常是:-480
innerWidth参数:window.innerWidth
innerHeight参数:window.innerHeight
outerWidth参数:window.outerWidth
outerHeight参数:window.outerHeight
colorDepth参数:screen.colorDepth
pixelDepth参数:screen.pixelDepth
availWidth参数:screen.availWidth
availHeight参数:screen.availHeight
platform:参数:navigator.platform  通常为:Linux armv8l/Linux armv7l/iPhone/Linux aarch64/Win32/Linux x86/Linux x64 除了iPhone其他都可以随机机型
plugins参数:navigator.plugins    可以随机加字体名字,例如为:Arial,Arial Black,Arial Narrow,Arial Unicode MS,Book Antiqua,Bookman Old Style,Calibri,Cambria,Cambria Math,Century,Century Gothic,Century Schoolbook,Comic Sans MS,Consolas,Courier,Courier New,Georgia,Helvetica,Impact,LucIDA Bright,Lucida Calligraphy,Lucida Console,Lucida Fax,Lucida Handwriting,Lucida Sans,Lucida Sans Typewriter,Lucida Sans Unicode,Microsoft Sans Serif,Monotype Corsiva,MS Gothic,MS PGothic,MS Reference Sans Serif,MS Sans Serif,MS Serif,Palatino Linotype,Segoe Print,Segoe Script,Segoe UI,Segoe UI Light,Segoe UI Semibold,Segoe UI Symbol,Tahoma,Times,Times New Roman,Trebuchet MS,Verdana,Wingdings,Wingdings 2,Wingdings 3
appName浏览器名称参数:navigator.appName  通常为:Netscape
appVersion浏览器版本参数:navigator.appVersion;  就是UA的前半部分
cookieEnabled返回用户浏览器是否启用了cookie参数:navigator.cookieEnabled
cpuClass 硬件cpu型号: navigator.cpuClass; //返回用户计算机的cpu的型号,通常intel芯片返回"x86"(火狐没有)
mimeTypes浏览器支持的所有MIME类型的数组参数:navigator.mimeTypes
userLanguage浏览器语言参数:navigator.userLanguage   // 用户在自己的操作系统上设置的语言(火狐没有)
systemLanguage;系统默认语言:navigator.systemLanguage //火狐没有
enumerateDevices 获取设备列表:navigator.mediaDevices  //大多数移动没有,可以不劫持
webdriver系统驱动参数:navigator.webdriver 或者是:window.navigator.webdriver  //大多数移动没有,可以不劫持
webglVendorAndRenderer参数:navigator.webdriver  //大多数移动没有,可以不劫持

canvas参数修改代码:通过js代码:

  

 其中:
iphone 5系列是:320x568    pixelRatio:2
iphone 6,7,8系列:375x667  pixelRatio:2
iphone plus系列是:414x736 pixelRatio:3
iphone x分辨率是:375x812  pixelRatio:3
ipad 分辨率是:768x1024  pixelRatio:3
ipad pro:1024x1366 pixelRatio:3
以上随机就行,百度对苹果系列监控不严格

根据个人的经验,百度商盾机制有以下几种

1.Headless Chrome 特性检测,商盾指出爬虫点击竞价为无效点击
Headless Chrome由于其自身就是一个chrome浏览器,因此支持各种新的css渲染特性和js运行时语法。基于这样的手段,爬虫作为进攻的一方可以绕过几乎所有服务端校验逻辑,但是这些爬虫在客户端的js运行时中依然存在着一些破绽。

2.初级检测,例如百度统计,基于浏览器的 UserAgent 字段描述的浏览器品牌、版本型号信息,对js运行时、DOM和BOM的各个原生对象的属性及方法进行检验,观察其特征是否符合该版本的浏览器所应具备的特征(浏览器指纹检查)

3.对Headers的User-Agent进行检测(根据User-Agent 来鉴别你的http header中的各个字段是否符合该浏览器的特征)

4.设备指纹

5. cookie检测,将设备指纹,服务端下发认证 set进cookie,对cookie的访问频率 限制cookie可以有效解决用户标识问题(访客识别码就是以这个计算出的,百度统计的访客识别码)

6.IP检测通过IP风险库判断是恶意IP进行黑名单

7.JS-Injection,这个方法也是目前业界广泛使用的,在第一次访问请求时,返回注入的js,js执行一些计算逻辑,并将其放入cookie,再次发起请求验证,验证成功后,server向client发放一个token放在cookie里,以后的所有请求都需要携带该cookie标识已认证为非bot身份

8.轨迹模型,对用户浏览网页过程中产生的轨迹 进行机器学习判断是人还是机器,轨迹+CNN算法判断

9.ZoombieCookie,僵尸cookie是指那些删不掉的,删掉会自动重建的cookie。僵尸cookie是依赖于其他的本地存储方法,例如flash的share object,html5的local storages等,当用户删除cookie后,自动从其他本地存储里读取出cookie的备份,并重新种植。
zoombie cookie + 设备指纹 = 唯一用户
使用ZoombieCookie 持久化存储Cookie 增加用户伪造难度,解决设备指纹无法完全标识用户问题

10.用户画像,通过用户注册信息,结合用户的历史行为数据,对用户进行画像。从而分析用户的异常行为,百度常用这个。

11.Canvas 的指纹
Canvas是HTML5中动态绘图的标签。基于Canvas绘制特定内容的图片,使用canvas.toDataURL()方法返回该图片内容的base64编码字符串。对于PNG文件格式,以块(chunk)划分,最后一块是一段32位的CRC校验,提取这段CRC校验码便可以用于用户的唯一标识。

  浏览器环境参考我自己做的:http://www.sdfymj.com/ua.php

 

posted @ 2020-11-16 10:13  圆柱模板  阅读(759)  评论(0编辑  收藏  举报