如何以每月60万卢布的价格击败Y.Direct和AdWords中的点击

在过去的六个月中,我们以每月100万卢布的预算击败了上下文广告的“点击”。

打击欺诈的关键是每分钟对流量进行监控,并通过API进行异常更改通知和禁用有问题的公告,以及大量反映实时情况的报告。


图1.癸胺按关键字划分的访问者数量图表

您怎么知道自己受到攻击?


广告“点击”的最早迹象之一将是Yandex.Direct和AdWords中欺诈退款的百分比增加。
“在Yandex Direct中,欺诈费用会自动退回到广告活动的余额中。 由反欺诈系统消除的点击次数显示在“整个选定期间的无效点击”行的“每日统计”,“一般统计”报告中。
- 帮助J.指导“无效点击”

在AdWords中,可以在“列”标签上启用“无效点击”级别的显示:


图2. AdWords中具有“无效点击”级别的自定义列

在我们的案例中,Yandex.Direct的平均“ 无效点击 ”水平约为10%,因此,Yandex突然开始返还40%的广告预算,而一个月后,就返还了54%。

欺诈的下一个迹象是,许多广告组的过渡次数不合理增加,并且行为指标发生了重大变化。

我们注意到,对于每天从未有超过200个访问者的许多关键字,突然出现了多达3,000个访问者的峰值。 实际上,在这种活动的日子里,如果预算广告没有按时停止,则可以将其用于一项广告活动。


图3. Direct中特定广告组的流量增长不合理

Yandex和Google无法防范欺诈行为


在官方Direct Club中阅读有关上下文广告欺诈级别讨论就足够了,以确保许多广告客户因欺诈而蒙受损失。

Google正式承认其安全系统的错误,并向广告客户提供“退款要求”(预算回报)。 根据ClickSease服务的统计信息,Google Ads平均返回广告预算的12%。

如何通过AdWords的点击退还部分款项
您必须向Adwords发送有关“无效点击”投诉 ,在此之后,您将获得≈12%的支出报销。 此外,ClickSease服务会每2个月自动向Google发送类似的退款请求。

在我们的案例中,Google AdWords首先将我们流量的18%识别为“ 无效 ”并退回了款项,当我们发送“退款要求”投诉时,Google又退还了预算的13%。

Yandex无法识别其自身的保护筛选器的脆弱性以及对明显欺诈案件的投诉,因此发送了模板响应,指出问题出在广告商及其网站上。

在我们的案例中,Y。Direct的报告中,任何广告系列的“无效点击”百分比都从未超过令人垂涎的50%,即使在最猛烈的爆发时期,当80%的预算“合并”到通常不受欢迎的广告组中而没有致电时和应用程序。


图4. Direct中的一个广告系列中的“无效点击”级别

我们遇到了什么级别的攻击?


欺诈流量被定向到两个城市的四个业务线。 当连接新的广告活动或开始长期停止的活动时,在数小时内,“点击”也重新分配给了它们。

“点击欺诈”与时间无关,并且重新分配预算(例如在晚上)没有任何效果:我们仍然获得了剩余点击量。 在YAN,Yandex搜索和Google展示广告网络中,“点击”活动同样活跃。

在网站上,漫游器模拟用户的行为,浏览网站的各个部分,选择文本,自然地滚动并移动光标。

有现成的补救措施吗?


所有的点击欺诈防护服务都只有一种直接对抗工具-这将阻止Ya.Direct和AdWords广告系列中的可疑IP地址或展示位置。

如果使用动态IP来对付您,那么任何点击欺诈控制服务将始终比欺诈者更容易通过IP阻止它们:在该服务将该IP列入黑名单之前,该漫游器已经对您的广告进行了多次点击并停止在其上展示广告。 此外,在欺诈性软件看不到您的广告之后,它只会更改IP地址,硬件ID并继续其操作。

在GDN或YAN上攻击广告时,通常会使用各种展示位置,并且自动防护系统无法检测到可屏蔽的可屏蔽站点。

让我们回到IP封锁-这里是最有趣的部分:如果AdWords允许您封锁多达500个IP地址,那么Yandex Direct每个广告系列只能封锁25个唯一IP地址 ! 如此小的IP地址黑名单不再重要,因为现在您可以安全地以1万卢布的价格购买500个IPv4地址,并规避此限制。

有两种方法可以保护自己免受高层“点击”的影响:

  1. 学会不向欺诈用户或机器人展示广告,您需要针对其行为和特征寻找某些“模式”;
  2. 暂时停止要定位的特定广告组和关键字。

减少部分观众以节省大部分


如果您学会了不向漫游器或欺诈性用户展示点击广告,那么它们将不会受到伤害。

您可以始终跟踪类似的行为方式和模式,例如,欺诈行为通常在莫斯科的Windows 7上从5:00运行到9:00,并在所有受攻击的广告系列中为相似的受众群体将出价调整设置为-100%。 AdWords中出价调整功能非常广泛,而Yandex Direct中的调整功能则无法说明。

我们正在通过安全服务寻找欺诈行为的模式


为了了解他们如何精确地攻击我们并手动跟踪欺诈性流量中的模式,我们连接了俄罗斯ClickFrog反欺诈服务 。 该产品早已为所有人所熟知,并在CPA环境中流行。

ClickFrog很快证明完全残疾:

  1. 每天分配的可疑IP地址不超过40个,每天来自Direct的流量为3,000万次点击,甚至被Yandex认可,每天还有1300次“左”点击;
  2. 保护服务的主要工具是按IP地址阻止,有关该命令的命令是通过API发送给J.Direct的。但是,一旦填写了25个IP地址的黑名单,您就需要手动删除每个广告系列中的最后几个IP,并等待下一个列表被填充,并且所以围成一圈。

然后,我们为ClickSease安装了代码, ClickSease是一种针对AdWords的美国服务,尚未与Yandex.Direct一起使用。 顺便说一下,与ClickFrog不同,该服务的免费试用期为2周。

事实证明,ClickSease更为有用:它每天开始捕获300-400个唯一的欺诈性IP。 为每个被阻止的IP服务提供统计信息:

  • 互联网服务提供商
  • 发生过渡的平台;
  • 作业系统
  • 唯一的设备ID
  • 第一次和最后一次转换的时间;
  • 地区。

从ClickSease报告中,我们能够识别欺诈行为的模式:
  • 在81%的情况下,设备会模拟移动操作系统:Android或iOS;
  • 在59%的情况下,IP地址的地理位置不适用于莫斯科,而欺诈行为直接针对莫斯科。

手动寻找欺诈行为的模式


但是,即使是这种明显的模式也不足以减少欺诈带来的危害,我也不想关闭移动广告。 服务通常只能提供识别欺诈中类似模式的想法,然后您需要在Metrica中发现欺诈(以防Direct受到攻击),然后在单独的Yandex Audience部分中将其选中,以进行进一步的分析和阻止。


图5.在Metric中按年龄组进行流量分析以搜索欺诈模式的示例

流量切片以帮助识别欺诈模式:
  • 按年龄段划分的受众动态;
  • 用户长期利益的动态;
  • 设备和操作系统动态。

对于AdWords,抵制机制很明确:

  1. 我们定义了一个被欺诈“感染”的受众群体;
  2. 我们将所选细分受众群的出价调整设置为-100%;
  3. 我们监控指标的变化:转化,网站停留时间,浏览深度,跳出率。

在Yandex Direct中,斗争机制更加复杂,分为两种选择:

a)您设法找到与性别,年龄或流动性有关的明显欺诈模式:

  1. 我们将所选细分的出价调整设置为-50%或-100%;
  2. 我们监控关键指标的变化。

b)没有发现明显的模式:

  1. 我们在单独的Yandex.Audience细分中选择欺诈流量(例如,您知道从10月1日到10月20日,广告组的点击次数不能达到5,000,每天的访问量始终不超过30)
  2. 通过与Yandex相似,我们创建了与欺诈行为相似的用户群;
  3. 将手动创建的细分受众群的出价调整设置为-100%;
  4. 我们仔细测试了Yandex创建的细分受众群广告费率的降低情况。

建立显示欺诈的图表


欺诈总是产生明显的焦点和高峰 ,无论它是模仿真实用户行为还是执行技术任务的自由职业者行为的抽象软件。


图6.癸胺按关键字划分的访问者数量图表

欺诈不均的发生有几个原因:
  • 要使攻击“顺利进行”,您需要掌握机密信息,并知道您的广告获得了谁,何时和多少次点击;
  • 该软件会突然出现,每分钟,10分钟,有时甚至在每小时图表上,它的动作都会引人注目;
  • 即使“学童”在公告板上对您不利,他们也会通过算法执行特定的任务,并且很容易跟踪他们产生的异常情况。

如果您学会快速查找并消除病灶,则可以显着减少欺诈造成的危害。 在我们的案例中,一个明显的迹象是特定关键字在特定的10分钟或1分钟内上下文广告的点击次数异常增加。

对于可视化, Google Data Studio是最合适的,因为只有Analytics(分析)才能正确收集1分钟和10分钟的时间细分数据,而Metrika在构建关于薄荷的报告时会给出错误的指示。

如何在10分钟内(而不是每小时)在Google Data Studio中构建图表
默认情况下,在Analytics(分析)或Data Studio中,您无法每分钟或10分钟构建图表,但是可以在Date Studio中按以下步骤进行操作:

步骤1.打开字段编辑



步骤2.创建以下字段的副本:年,年中的月份,月中的某天,小时,分钟,并为其命名,例如,年(天),年中的月(天)等。 同样,在复制的字段中,必须将“类型”从时间和日期格式更改为“数字”,如图所示。


步骤2.,将复制字段的类型从“日期”更改为“数字”

步骤3.创建一个新字段,在其中写入以下公式:年(天)* 10000000 +月份(天)* 100000 +月份(天)* 1000 +小时(天)* 10 +地板(分钟(天)/ 10)


步骤3.创建一个计算字段“ 10分钟的时间”

步骤4.保存创建的字段,然后返回所有字段的列表,并找到新字段“ Time for 10 minutes(decamenut)”。 如图所示,有必要将其类型从“数字”更改为“日期和时间”,然后将类型“数字”分配回该字段。


步骤4.创建一个计算字段“ 10分钟的时间”

步骤5.创建一个“组合图表”,并将新的“ 10分钟的时间”字段设置为参数,如图所示。 做完了


步骤5.创建一个“组合图”


配置有关欺诈爆发的通知


为了不手动跟踪所有欺诈案件,我在Google表格中创建了一个报告,该报告每分钟更新一次数据并通知欺诈开始。

Google表格支持Core Reporting API ,可以通过表格中的脚本编辑器进行访问。

步骤1.转到脚本编辑器以访问Analytics(分析)


图7.脚本编辑器,用于通过Google Tables访问Analytics Core Reporting API

第2步。我们向Google Analytics(分析)编写API请求,以接收有关必要指标的数据(例如,在我们的示例中,每天的每一分钟点击付费广告的用户数量)。

Google脚本代码可从Google表格中的Google Analytics(分析)中请求任何数据
function runDemo() { try { var firstProfile = getFirstProfile(); var results = getReportDataForProfile(firstProfile); outputToSpreadsheet(results); } catch(error) { Browser.msgBox(error.message); } } function getFirstProfile() { var accounts = Analytics.Management.Accounts.list(); if (accounts.getItems()) { var firstAccountId = accounts.getItems()[0].getId(); var webProperties = Analytics.Management.Webproperties.list(firstAccountId); if (webProperties.getItems()) { var firstWebPropertyId = webProperties.getItems()[0].getId(); var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId); if (profiles.getItems()) { var firstProfile = profiles.getItems()[0]; return firstProfile; } else { throw new Error('No views (profiles) found.'); } } else { throw new Error('No webproperties found.'); } } else { throw new Error('No accounts found.'); } } function getReportDataForProfile(firstProfile) { var profileId = firstProfile.getId(); var tableId = 'ga:' + profileId; var startDate = "today"; // getLastNdays(14)  2 weeks (a fortnight) ago. var endDate = "today"; //getLastNdays(0)  Today. var optArgs = { 'dimensions': 'ga:date,ga:hour,ga:minute,ga:sourceMedium', // Comma separated list of dimensions. 'sort': 'ga:date,ga:hour,ga:minute', // Sort by sessions descending, then keyword. //'segment': 'dynamic::ga:isMobile==Yes', // Process only mobile traffic. 'filters': 'ga:sourceMedium==yandex / cpc', 'start-index': '1', 'max-results': '10000' // Display the first 250 results. }; // Make a request to the API. var results = Analytics.Data.Ga.get( tableId, // Table id (format ga:xxxxxx). startDate, // Start-date (format yyyy-MM-dd). endDate, // End-date (format yyyy-MM-dd). 'ga:users', // Comma seperated list of metrics. optArgs); if (results.getRows()) { return results; } else { throw new Error('No views (profiles) found'); } } function getLastNdays(nDaysAgo) { var today = new Date(); var before = new Date(); before.setDate(today.getDate() - nDaysAgo); return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd'); } function outputToSpreadsheet(results) { var sheets = SpreadsheetApp.getActiveSpreadsheet(); var sheet = sheets.getSheetByName("coeff1"); var range = sheet.getRange('A:E'); range.clear(); // Print the headers. var headerNames = []; for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) { headerNames.push(header.getName()); } sheet.getRange(1, 1, 1, headerNames.length) .setValues([headerNames]); // Print the rows of data. sheet.getRange(2, 1, results.getRows().length, headerNames.length) .setValues(results.getRows()); } 



步骤3.我们将触发器设置为每分钟更新一次数据:


图8.我们每分钟都要求提供新数据以快速应对欺诈行为

第4步。我们从工作表中每分钟更新一次必要数据,以创建数据透视表,并分析这些指标以配置电子邮件通知触发器或使用Yandex.Direct API或AdWords禁用广告组。

图片 图9.异常通知的设置公式示例

我的Google脚本代码示例,用于发送电子邮件通知
 function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("notification"); var range = sheet.getRange("D2:E4"); // The row and column here are relative to the range // getCell(1,1) in this code returns the cell at B2, B2 var cell = range.getCell(1, 2); Logger.log(cell.getValue()); if (cell.getValue() !== "no") { MailApp.sendEmail("your_email@yandex.ru", "Fraud notification "+cell.getValue(), "Check me "+range.getCell(1, 1).getValue()); } else { } var cell2 = range.getCell(2, 2); Logger.log(cell2.getValue()); if (cell2.getValue() !== "no") { MailApp.sendEmail("your_email@yandex.ru", "Fraud notification "+cell2.getValue(), "Check me "+range.getCell(2, 1).getValue()); } else { } var cell3 = range.getCell(3, 2); Logger.log(cell3.getValue()); if (cell3.getValue() !== "no") { MailApp.sendEmail("your_email@yandex.ru", "Fraud notification "+cell3.getValue(), "Check me "+range.getCell(3, 1).getValue()); } else { } } 


底线:如何消除点击


打击点击欺诈可分为三类:

a)积极行动:
  • 关闭“污染场地”;
  • 禁止为您显示带有欺诈迹象的受众群体的广告,例如针对来自圣彼得堡的平板电脑上的用户的广告(可以通过AdWords列表和“指标”细分使用更复杂的屏蔽参数);
  • 针对与欺诈细分受众群相似的细分受众群的出价调整(在Y. Audiences和Google列表中创建“相似”细分受众群);
  • 通过IP网络掩码阻止欺诈(仅在AdWords中可用)。

b)预防措施:
  • 将预算退款报告给AdWords和Direct
  • “谁下令攻击您”的调查;
  • 将可疑且经常受到攻击的广告组归为一个广告系列;
  • 最简单的机器人的“陷阱”,即站点上仅对机器人可见的隐藏按钮,单击该按钮将进入列表。

c)“事后”行动:
  • 通过IP地址阻止;
  • 点击中心快速断开连接:关键字,广告组,广告系列,细分受众群。

图片
图10.防止点击欺诈

有用的链接:


如何找出谁下令对您的广告发起攻击
任何适当的竞争对手在攻击他人时都将其伤害降至最低:

  1. 首先,攻击者将尽量不按照当前攻击的方向显示广告,以免合并其点击率并提高其每次点击费用;
  2. 其次,不道德的竞争者会选择此类关键字进行攻击,据此,他可以停止展示自己的广告,而不会对自己造成太大伤害。

在我们的案例中,竞争对手也开始在两个城市的四个方向上点击欺诈行为,因此计算起来并不难。

为了更轻松地分析与您相交的竞争对手,您可以在Yandex.Direct界面中看到每个关键字的所有随附竞争对手广告:


图9.所有竞争对手的关键字广告


谁还会面临上下文广告点击-在评论中写,我们将尽力互相帮助!

Source: https://habr.com/ru/post/zh-CN423335/


All Articles