程序化广告行业(59/89):广告验证与反作弊实战技巧

news2025/4/8 17:38:45

程序化广告行业(59/89):广告验证与反作弊实战技巧

大家好!在程序化广告领域,想要做好投放,除了了解基本的架构和原理,还得掌握一些关键的技能,比如广告验证和反作弊。今天就和大家一起深入学习这方面的知识,共同进步。

一、广告反作弊全解析

在程序化广告的世界里,作弊行为就像隐藏在暗处的“小偷”,偷走广告主的预算,破坏市场的公平。所以,反作弊是保障广告投放效果的重要环节。

(一)常见作弊现象及检测方法

  1. 离线检测:我们可以通过分析一些数据特征来发现潜在的作弊行为。如果一个cookie对应超多IP或设备ID ,或者一个设备ID关联了大量不同的IP和userAgent,这就很可疑。还有,如果点击的refererurl里有奇怪的字符串,像包含display_ad.php ,或者出现有点击却没曝光的IP,以及点击率异常高(移动端大于10%或PC端大于6%且点击量大于30 )的IP和设备ID,这些都可能是作弊的信号。另外,如果某个广告位的曝光或点击都集中在少量的IP、cookie或设备ID上,或者页面停留时间、窗口大小不符合常理,比如PC端平均窗口大小指标小于70万像素或大于110万像素,移动端小于1万像素或大于50万像素,都值得深入调查。
  2. 实时检测:在广告投放的过程中,也有一些实时监测作弊的方法。要是发现某个cookie在N分钟内使用的IP超过N个,或者点击次数超过N次,那就很可能有问题。另外,如果userAgent里出现java、python这类关键字,直接拉黑,因为很多作弊机器人可能会用这些特征。

(二)反作弊方法

  1. 基于用户标识:通常,我们会用IP、cookie(或设备ID)来识别用户。要是发现某些用户的曝光或点击频次特别高,就得小心了。有些作弊者会用机器人不断变换IP来迷惑我们,这时候就要综合考虑浏览器指纹信息。比如说,当IP和cookie都不一样,但浏览器型号、分辨率、用户窗口大小、操作系统版本号、设备品牌都相同,那就很可能是作弊流量。
  2. 基于用户行为
    • 广告浏览/点击行为:仔细分析用户的广告浏览和点击行为能发现很多线索。要是同一用户在同一时间对多个广告位进行浏览或点击,或者短时间内在同一个广告位频繁操作,这就不太正常。还有,如果用户的广告浏览或点击时间间隔特别规律,或者曝光数和点击数在某个时间点突然暴增,又或者用户没看广告就直接点击(大量无曝光的点击),以及浏览广告的面积和时长数据异常,点击位置过于规律或集中,还有浏览和点击的时间顺序错乱,这些都可能是作弊行为。
    • 到站情况:用户点击广告后到达目标页面的表现也很重要。我们要综合考虑用户留存、停留时间、访问深度这些指标,还要关注用户在站内的交互情况,比如点击、滚动、输入等操作。有些作弊媒体会用机器制造大量页面点击,我们可以通过分析点击区域、次数、频率、页面窗口大小等指标来辨别真假。
  3. 基于广告来源:对到站流量的来源页面进行侦查也能发现作弊流量。如果出现大量没有refer(来源页面信息)的广告流量,或者refer和投放媒体不对应,比如要求投放到A网站,结果refer里大量出现B网站,那就可以判定是作弊流量。

下面用一段简单的Python代码来模拟检测同一用户短时间内多次点击的情况:

import time

# 模拟用户点击记录,格式为 (用户ID, 点击时间)
click_records = [
    ("user1", time.time()),
    ("user2", time.time() + 1),
    ("user1", time.time() + 2),
    ("user1", time.time() + 3)
]

user_click_count = {}
for user_id, click_time in click_records:
    if user_id not in user_click_count:
        user_click_count[user_id] = {
            "count": 1,
            "last_click_time": click_time
        }
    else:
        user_click_count[user_id]["count"] += 1
        time_diff = click_time - user_click_count[user_id]["last_click_time"]
        if time_diff < 5 and user_click_count[user_id]["count"] > 2:
            print(f"用户 {user_id} 可能存在短时间内多次点击的作弊行为")
        user_click_count[user_id]["last_click_time"] = click_time

二、品牌安全保障

品牌广告对投放环境的要求很高,因为它关系到品牌的美誉度。想象一下,如果一个高端品牌的广告出现在色情网站或者敏感时事新闻页面上,用户肯定会对这个品牌产生负面印象,严重的话还会损害品牌形象。

为了保障品牌安全,通常会有专门的广告验证平台提供服务。广告主可以在这些平台上设置敏感或非法的关键词、页面黑名单,在投放时过滤掉相关流量。DSP平台和这些广告验证平台对接有两种方式:Pre - bid和Post - bid 。Pre - bid就是DSP平台在出价前询问广告验证平台,根据流量是否符合广告主的条件来决定是否出价,这样可以排除效果差和内容敏感的流量,避免产生不必要的费用。Post - bid则是在竞价成功后再询问广告验证平台,如果流量符合条件就展示广告,不符合就用空白或其他图片代替,但不管怎样,广告主都得为这个流量付费。

三、广告可见度测量

广告曝光了,不代表用户就能看到。广告可见度的统计逻辑比普通广告投放曝光要严格得多,它需要验证广告是否出现在浏览器的可见区域,并且满足一定的可见时长要求。

通常,我们通过JS代码来检测当前页面的位置和可视面积。MMA(移动营销协会)的广告可见性验证标准还规定了验证时间间隔,展示类广告最低100毫秒检测一次,视频广告最低每200毫秒检测一次。可见度相关的指标有可监控曝光次数、可视曝光次数和可视率。

不过,有些情况下广告可见度是无法监测的。比如部分媒体不支持JS代码投放,还有媒体的广告位是跨域iframe形式,JS无法检测跨域广告位的位置和可视面积。在App环境里,由于广告位基于webview,可视面积默认是100%,所以移动端的Viewability(可见度)并不是特别准确。

四、总结

今天我们详细学习了程序化广告中的广告验证和反作弊知识,包括常见的作弊现象、检测方法、反作弊策略,以及品牌安全和广告可见度的相关内容。这些知识对于优化广告投放、提高广告效果非常重要。

写作不易,如果这篇文章对你有所帮助,希望大家能关注我的博客,点赞评论支持一下。后续我还会分享更多程序化广告行业的干货,咱们一起在这个领域不断探索,共同提升!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费在线MBTI性格测试工具 - 探索你的性格特质

免费在线MBTI性格测试工具 - 探索你的性格特质 简介 我很高兴为大家分享这个专业的MBTI性格测试工具。这是一个完全免费的在线测试系统&#xff0c;基于迈尔斯-布里格斯类型指标(MBTI)理论开发&#xff0c;旨在帮助您更好地了解自己的性格特征&#xff0c;发现职业发展方向。…

AI 数理逻辑基础之统计学基本原理(上)

目录 文章目录 目录统计学统计学基本概念描述性统计数据可视化图表工具 汇总统计统计数据的分布情况&#xff1a;中位数、众数、平均值统计数据的离散程度&#xff1a;极差、方差、标准差、离散系数 相关分析Pearson 线性关系相关系数Spearman 单调关系相关系数 回归分析回归模…

积分赛——读取实时时间

设计要求 调用DS1302芯片驱动程序&#xff0c;读取DS1302中的实时时分秒数据&#xff0c;并显示在数码管上。 23时59分59秒 通过串口发送时间作为定时时间&#xff0c;定时时间到则蜂鸣器响2s后静音。 串口发送格式&#xff1a;“12&#xff1a;35&#xff1a;66”。 备注&…

进程和线程的概念及Linux操作

文章目录 一、进程与线程1、进程2、线程3、查看进程与线程 二、Linux的“虚拟内存管理”&#xff0c;它与stm32中的 真实物理内存&#xff08;内存映射&#xff09;有什么区别&#xff1f;三、Linux系统调用函数 fork()、wait()、exec() 等1、fork&#xff08;&#xff09;函数…

APang网联科技项目报告【服务器篇】

APang网联科技&#xff1a;连接未来&#xff0c;智能领航 公司简介 APang网联科技成立于 [2005年]&#xff0c;总部位于 [广东深圳]&#xff0c;是一家集网络技术研发、系统集成、项目实施与运维服务为一体的高新技术企业。我们致力于为客户提供全方位、定制化的网络部署解决…

[MySQL初阶]MySQL表的操作

MySQL表的操作 1. 创建表2. 查看表结构3. 修改表&#xff08;修改表的属性而非表的数据&#xff09;4. 删除表 1. 创建表 语法&#xff1a; CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engine 存储…

AI助力高效PPT制作:从内容生成到设计优化

随着人工智能技术的不断发展&#xff0c;AI在各个领域的应用日益普及&#xff0c;尤其是在文档和演示文稿的创建过程中。PowerPoint&#xff08;PPT&#xff09;作为最常用的演示工具之一&#xff0c;借助AI的技术手段&#xff0c;可以极大地提高制作效率并提升最终呈现效果。在…

《双影奇境》手机版上线?ToDesk用跨平台技术实现「全设备云电脑3A游戏」

《双影奇境》是由Hazelight Studios研发发行的一款双人合作冒险类游戏&#xff0c;玩家们在游戏中将扮演米欧和佐伊两位风格迥异的女作家&#xff0c;剧情讲述的是她们被骗进入一台意在窃取创意的机器后便陷入了自己创作的故事之中&#xff0c;并且必须相互依靠&#xff0c;努力…

spring IOC 反射 bean生命周期

目录 反射 反射三种方式 获取反射中的Class对象 通过反射创建类对象 通过反射获取类属性、方法、构造器 IOC 概念 原理 实现方式 基于 XML 配置 基于注解配置 IOC优点 IOC的初始化过程 1. 资源定位 3. Bean 定义注册 4. BeanFactory 后置处理 5. Bean 后置处理…

Pytorch中预置数据集的加载方式

Pytorch中数据集加载方式 数据类型​PyTorch 模块​是否预置数据集图像/视频torchvision.datasets✅ 是音频torchaudio.datasets✅ 是文本torchtext.datasets✅ 是&#xff08;需安装&#xff09;自定义数据torch.utils.data❌ 否&#xff08;需手动实现&#xff09;多模态/第三…

ARM-----数据处理、异常处理、模式切换

实列一&#xff1a; 1. 异常向量表 area reset, code, readonly code32 entry area reset, code, readonly&#xff1a;定义一个名为reset的代码区域&#xff0c;只读。 code32&#xff1a;指示编译器生成32位ARM指令。 entry&#xff1a;标记程序的入口点。 2. 程序入口…

d202541

目录 一、分隔链表 二、旋转链表 三、删除链表中重复的数字 一、分隔链表 用两个list存一下小于和大于等于 x的节点 最后串起来就行 public ListNode partition(ListNode head, int x) {ListNode ret new ListNode(1);ListNode cur ret;List<ListNode> small new A…

YOLOv12 从预训练迈向自主训练,第一步数据准备

视频讲解&#xff1a; YOLOv12 从预训练迈向自主训练&#xff0c;第一步数据准备 前面复现过yolov12&#xff0c;使用pre-trained的模型进行过测试&#xff0c;今天来讲下如何训练自己的模型&#xff0c;第一步先准备数据和训练格式 https://gitcode.com/open-source-toolkit/…

【UVM学习笔记】更加灵活的UVM—通信

系列文章目录 【UVM学习笔记】UVM基础—一文告诉你UVM的组成部分 【UVM学习笔记】UVM中的“类” 文章目录 系列文章目录前言一、TLM是什么&#xff1f;二、put操作2.1、建立PORT和EXPORT的连接2.2 IMP组件 三、get操作四、transport端口五、nonblocking端口六、analysis端口七…

NSSCTF [HGAME 2023 week1]simple_shellcode

3488.[HGAME 2023 week1]simple_shellcode 手写read函数shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…

数据集(Dataset)和数据加载器(DataLoader)-pytroch学习3

pytorch网站学习 处理数据样本的代码往往会变得很乱、难以维护&#xff1b;理想情况下&#xff0c;我们希望把数据部分的代码和模型训练部分分开写&#xff0c;这样更容易阅读、也更好维护。 简单说&#xff1a;数据和模型最好“分工明确”&#xff0c;不要写在一起。 PyTor…

数据结构|排序算法(一)快速排序

一、排序概念 排序是数据结构中的一个重要概念&#xff0c;它是指将一组数据元素按照特定的顺序进行排列的过程&#xff0c;默认是从小到大排序。 常见的八大排序算法&#xff1a; 插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序、基数排序 二、快速…

文件或目录损坏且无法读取:数据恢复的实战指南

在数字化时代&#xff0c;数据的重要性不言而喻。然而&#xff0c;在日常使用电脑、移动硬盘、U盘等存储设备时&#xff0c;我们难免会遇到“文件或目录损坏且无法读取”的提示。这一提示如同晴天霹雳&#xff0c;让无数用户心急如焚&#xff0c;尤其是当这些文件中存储着重要的…

leetcode数组-螺旋矩阵Ⅱ

题目 题目链接&#xff1a;https://leetcode.cn/problems/spiral-matrix-ii/ 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7…

小刚说C语言刷题——第14讲 逻辑运算符

当我们需要将一个表达式取反&#xff0c;或者要判断两个表达式组成的大的表达式的结果时&#xff0c;要用到逻辑运算符。 1.逻辑运算符的分类 (1)逻辑非(!) &#xff01;a&#xff0c;当a为真时&#xff0c;&#xff01;a为假。当a为假时&#xff0c;&#xff01;a为真。 例…