程序化广告行业(59/89):广告验证与反作弊实战技巧
程序化广告行业(59/89):广告验证与反作弊实战技巧
大家好!在程序化广告领域,想要做好投放,除了了解基本的架构和原理,还得掌握一些关键的技能,比如广告验证和反作弊。今天就和大家一起深入学习这方面的知识,共同进步。
一、广告反作弊全解析
在程序化广告的世界里,作弊行为就像隐藏在暗处的“小偷”,偷走广告主的预算,破坏市场的公平。所以,反作弊是保障广告投放效果的重要环节。
(一)常见作弊现象及检测方法
- 离线检测:我们可以通过分析一些数据特征来发现潜在的作弊行为。如果一个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万像素,都值得深入调查。
- 实时检测:在广告投放的过程中,也有一些实时监测作弊的方法。要是发现某个cookie在N分钟内使用的IP超过N个,或者点击次数超过N次,那就很可能有问题。另外,如果userAgent里出现java、python这类关键字,直接拉黑,因为很多作弊机器人可能会用这些特征。
(二)反作弊方法
- 基于用户标识:通常,我们会用IP、cookie(或设备ID)来识别用户。要是发现某些用户的曝光或点击频次特别高,就得小心了。有些作弊者会用机器人不断变换IP来迷惑我们,这时候就要综合考虑浏览器指纹信息。比如说,当IP和cookie都不一样,但浏览器型号、分辨率、用户窗口大小、操作系统版本号、设备品牌都相同,那就很可能是作弊流量。
- 基于用户行为
- 广告浏览/点击行为:仔细分析用户的广告浏览和点击行为能发现很多线索。要是同一用户在同一时间对多个广告位进行浏览或点击,或者短时间内在同一个广告位频繁操作,这就不太正常。还有,如果用户的广告浏览或点击时间间隔特别规律,或者曝光数和点击数在某个时间点突然暴增,又或者用户没看广告就直接点击(大量无曝光的点击),以及浏览广告的面积和时长数据异常,点击位置过于规律或集中,还有浏览和点击的时间顺序错乱,这些都可能是作弊行为。
- 到站情况:用户点击广告后到达目标页面的表现也很重要。我们要综合考虑用户留存、停留时间、访问深度这些指标,还要关注用户在站内的交互情况,比如点击、滚动、输入等操作。有些作弊媒体会用机器制造大量页面点击,我们可以通过分析点击区域、次数、频率、页面窗口大小等指标来辨别真假。
- 基于广告来源:对到站流量的来源页面进行侦查也能发现作弊流量。如果出现大量没有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"] += 1time_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(可见度)并不是特别准确。
四、总结
今天我们详细学习了程序化广告中的广告验证和反作弊知识,包括常见的作弊现象、检测方法、反作弊策略,以及品牌安全和广告可见度的相关内容。这些知识对于优化广告投放、提高广告效果非常重要。
写作不易,如果这篇文章对你有所帮助,希望大家能关注我的博客,点赞评论支持一下。后续我还会分享更多程序化广告行业的干货,咱们一起在这个领域不断探索,共同提升!
相关文章:
程序化广告行业(59/89):广告验证与反作弊实战技巧
程序化广告行业(59/89):广告验证与反作弊实战技巧 大家好!在程序化广告领域,想要做好投放,除了了解基本的架构和原理,还得掌握一些关键的技能,比如广告验证和反作弊。今天就和大家一…...
市场趋势分析与交易策略调整
市场趋势分析与交易策略调整 在市场交易中,趋势的判断与策略的调整至关重要。不同市场环境下,交易者需要灵活运用技术分析和资金管理手段,以提升交易的稳定性。本文将探讨市场趋势的识别方法,以及如何在不同市场环境中调整交易策略…...
安卓离线畅玩的多款棋类单机游戏推荐
软件介绍 在手游盛行的当下,不少玩家在网游激战之余,渴望一份单机游戏带来的宁静与专注。今天要为大家介绍的,便是一款能满足此类需求的安卓软件 —— 棋类大师。 它巧妙地将象棋、围棋、五子棋三种经典棋类游戏集成于一身,且具…...
论文阅读Diffusion Autoencoders: Toward a Meaningful and Decodable Representation
原文框架图: 官方代码: https://github.com/phizaz/diffae/blob/master/interpolate.ipynb 主要想记录一下模型的推理过程 : %load_ext autoreload %autoreload 2 from templates import * device cuda:1 conf ffhq256_autoenc() # pri…...
医疗信息系统的主要痛点分析
医疗信息系统的主要痛点分析 1. 数据治理问题 数据标准不统一 各医院采用不同的数据格式和编码标准诊断术语、药品编码等缺乏统一规范检验检查结果的参考值范围不一致 数据质量参差不齐 数据录入不规范,存在大量错误和缺失历史数据清洗难度大数据更新不及时 数据安…...
Pycharm v2024.3.4 Windows Python开发工具
Pycharm v2024.3.4 Windows Python开发工具 文章目录 Pycharm v2024.3.4 Windows Python开发工具一、介绍二、效果三、下载 一、介绍 JetBrains PyCharm 是一款Python集成开发环境(IDE),被广泛用于Python开发 二、效果 三、下载 百度网盘: …...
YOLOv12 从预训练迈向自主训练,第一步数据准备
视频讲解: YOLOv12 从预训练迈向自主训练,第一步数据准备 前面复现过yolov12,使用pre-trained的模型进行过测试,今天来讲下如何训练自己的模型,第一步先准备数据和训练格式 https://gitcode.com/open-source-toolkit/…...
Java 线程池全面解析
Java 线程池全面解析 一、线程池种类及优缺点 1. 常见线程池类型(通过Executors创建) 线程池类型创建方式特点适用场景缺点FixedThreadPoolExecutors.newFixedThreadPool(n)固定线程数,无界队列负载较重的服务器可能堆积大量任务导致OOMCachedThreadPoolExecutors.newCach…...
第七章 Python基础进阶-异常、模块与包(其五)
目录 一.异常 二.异常的捕获方法 1.捕获常规异常 2.捕获指定异常 3.捕获多个异常 4.异常else 5.异常的finally 三.异常的传递 四.Python模块 1.import导入模块 2.from导入模块 3.from模块名 import* 4.as定义别名 5.自定义模块 (1)测试模块…...
vulkanscenegraph显示倾斜模型(5.6)-vsg::RenderGraph的创建
前言 上一章深入分析了vsg::CommandGraph的创建过程及其通过子场景遍历实现Vulkan命令录制的机制。本章将在该基础上,进一步探讨Vulkan命令录制中的核心封装——vsg::RenderGraph。作为渲染流程的关键组件,RenderGraph封装了vkCmdBeginRenderPass和vkCmd…...
DelayQueue vs ScheduledThreadPool:Java定时任务的双雄争霸
定时任务管理的两种武林绝学 想象你需要管理一个跨时区的视频会议系统: DelayQueue 像一位严格的计时员,把所有会议请求按时间排序,到点才放行ScheduledThreadPool 像一位智能秘书,能主动安排、取消和调整会议时间 它们都能处理…...
Qt添加资源文件
目录 1.创建一个新项目 1.1菜单栏 添加菜单项 1.2工具栏 1.3铆接部件 1.4中心部件 1.5最终界面 2.资源文件 2.1将图片文件拷贝到项目位置下 2.2添加新文件 2.3rec.qrc文件 2.4添加前缀,添加文件 2.5使用 1.创建一个新项目 利用界面文件完成一个有菜单…...
U-Net: Convolutional Networks for BiomedicalImage Segmentation
Abstract 人们普遍认为,深度网络的成功训练需要成千上万的标注训练样本。在本文中,我们提出了一种网络和训练策略,该策略强烈依赖于数据增强,以更有效地利用现有的标注样本。该架构包括一个用于捕获上下文的收缩路径和一个用于实…...
28--当路由器开始“宫斗“:设备控制面安全配置全解
当路由器开始"宫斗":设备控制面安全配置全解 引言:路由器的"大脑保卫战" 如果把网络世界比作一座繁忙的城市,那么路由器就是路口执勤的交通警察。而控制面(Control Plane)就是警察的大脑…...
NHANES指标推荐:DI-GM
文章题目:The relationship between dietary index for gut microbiota and diabetes DOI:10.1038/s41598-025-90854-y 中文标题:肠道菌群膳食指数与糖尿病的关系 发表杂志:Sci Rep 影响因子:1区,IF3.8 发表…...
仓库规划 第32次CCF-CSP计算机软件能力认证
没什么说的暴力枚举 n*n*m 的时间复杂度 题目说选序号小的作为父亲 直接编号前往后输出 遇到合适的就break #include<bits/stdc.h> using namespace std; int n, m; int main() {cin >> n >> m;//n:仓库个数 m:位置编码的维数vector<vector<int>…...
leetcode-代码随想录-哈希表-哈希理论基础
哈希表理论基础 哈希表:或者称为散列表,是根据关键码的值而直接进行访问的数据结构。 哈希法:用于快速判断一个元素是否出现在集合里 哈希函数是⼀种映射关系,根据关键词key,经过⼀定函数关系 f 得到元素的位置。 存…...
《科学》期刊发布新成果:量子计算迎来原子 - 光腔集成新时代
《Error-detected quantum operations with neutral atoms mediated by an optical cavity》 -《Science》 2025.3.21 摘要 光镊(optical tweezers)束缚的可编程原子阵列已成为量子信息处理(quantum information processing)和量…...
Spring Boot 与 TDengine 的深度集成实践(一)
引言 在当今数字化时代,数据处理与存储对于各类应用的重要性不言而喻。Spring Boot 作为一款流行的 Java 开发框架,以其快速开发、约定大于配置、内嵌容器等特性,大大提升了 Java 企业级应用的开发效率,降低了开发门槛࿰…...
SpringBoot + Netty + Vue + WebSocket实现在线聊天
最近想学学WebSocket做一个实时通讯的练手项目 主要用到的技术栈是WebSocket Netty Vue Pinia MySQL SpringBoot,实现一个持久化数据,单一群聊,支持多用户的聊天界面 下面是实现的过程 后端 SpringBoot启动的时候会占用一个端口ÿ…...
数据结构实验2.3:Josephus问题求解
文章目录 一,问题描述二,基本要求三,算法设计(1)存储结构设计(2)算法设计 四,示例代码五,运行效果 一,问题描述 在现实生活以及计算机科学的一些场景中&…...
Ruby语言的代码重构
Ruby语言的代码重构:探索清晰、可维护与高效的代码 引言 在软件开发的过程中,代码的质量直接影响到项目的可维护性、扩展性和整体性能。随着时间的推移,系统的需求变化,代码可能会变得混乱和难以理解,因此࿰…...
CAN/FD CAN总线配置 最新详解 包含理论+实战(附带源码)
看前须知:本篇文章不会说太多理论性的内容(重点在理论结合实践),顾及实操,应用,一切理论内容支撑都是为了后续实际操作进行铺垫,重点在于读者可以看完文章应用。(也为节约读者时间&a…...
杰文字悖论:效率提升的副作用
最近,Deepseek的火爆让我们开始反思一个有趣的现象:杰文斯悖论。这是1856年,经济学家杰文斯提出来的一个有趣的现象:当技术效率提高时,资源的使用量反而会增加,而不是减少。听起来可能有点不可思议。杰文斯…...
AcWing 6118. 蛋糕游戏
贪心 为了方便描述,下面将贝茜和埃尔茜分别称为a、b。 已知蛋糕的数量为偶数个,b每次只能吃左右边界上的蛋糕,a每次操作将两个蛋糕变成一个,发现都会使蛋糕的数量减一,且a先操作将蛋糕数量从偶数变成奇数,…...
【前端】【Nuxt3】Nuxt 3 开发中因生命周期理解不足导致的常见错误分类及其解决方案
以下是 Nuxt 3 开发中因生命周期理解不足导致的常见错误分类及其解决方案,以结构化形式呈现: 一、数据获取与异步处理 错误 1:错误使用客户端钩子获取数据 问题:在 onMounted 中获取数据,导致 SSR 失效。示例&#x…...
【kubernetes】BusyBox
目录 1. 说明2. 在 Kubernetes 中的角色2.1 轻量级调试工具2.2 临时容器2.3 网络测试2.4 文件系统检查 3. 为什么选择 BusyBox?4. 常见用法5. 注意事项 1. 说明 1.BusyBox 是一个轻量级、开源的 Linux 工具集,将多种常见的 Unix 工具(如 ls、…...
Leetcode——239. 滑动窗口最大值
题解一 思路 第一次做困难的题,确实把我既困住了又难住了,确实自己一点都想不出来。 这个思路,差不多就是,自己定义一个单调队列。 添加的时候,判断是否比队列最后的元素大,如果比它大,就把…...
kubernetes configMap 存储
1.模型 首先会在每一个节点上安装一个叫 agent 端 agent 端要做的作用就是监听当前的目标配置中心的配置选项是否发送更新动作 如果有的话 我的agent 端的话要从远程的配置中心 去下载最新的配置文件 替换我当前的 再去触发nginx实现重载 当然对于后期的运维工程师 如果想去发…...
架构思维:查询分离 - 表数据量大查询缓慢的优化方案
文章目录 Pre引言案例何谓查询分离?何种场景下使用查询分离?查询分离实现思路1. 如何触发查询分离?方式一: 修改业务代码:在写入常规数据后,同步建立查询数据。方式二:修改业务代码:…...
A2DP(Advanced Audio Distribution Profile)是蓝牙协议栈中用于音频传输的一个标准化协议
A2DP(Advanced Audio Distribution Profile)是蓝牙协议栈中用于音频传输的一个标准化协议,主要用于高质量音频流的无线传输。以下是A2DP协议的详细信息: 定义 A2DP协议允许音源设备(Source,简称SRC&#…...
Redisson使用详解
一、Redisson 核心特性与适用场景 Redisson 是基于 Redis 的 Java 客户端,提供分布式对象、锁、集合和服务,简化分布式系统开发。 典型应用场景: 分布式锁:防止重复扣款、超卖控制(如秒杀库存)。数据共享…...
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
作者:林子熠、饶子昊 2025 年 3 月 18 日 Oracle 双箭齐发,正式发布了 JDK 24 和 GraalVM 24,带来了众多新特性。 JDK 24 在性能和安全性方面均有改进(特性列表链接见下),其中较大的一处改动是在 JDK 中…...
游戏编程模式学习(编程质量提升之路)
文章目录 前言一、命令模式(Command Pattern)1.命令模式练习场景I.需求场景 2.解耦命令与执行者3.使用命令对玩家角色和AI的操作进行统一抽象4. 命令模式的撤销实现 二、享元模式1.应用场景2.目的3.实现方式 三、原型模式1.运用场景2.实现方式 四、状态模…...
计算机视觉五大技术——深度学习在图像处理中的应用
深度学习是利用“多层神经网络”实现人工智能的一种方式 计算机视觉:“对图像中的客观对象构建明确而有意义的描述”,识别图片中的含义进行处理 1.图像分类——“图里有狗” 判断整张图片属于哪个类别,判断图片是“猫”还是“狗” 思路&a…...
Mixed Content: The page at https://xxx was loaded over HTTPS
一、核心原因分析 Mixed Content 警告是由于 HTTPS 页面中引用了 HTTP 协议的资源(如脚本、图片、iframe 等),导致浏览器因安全策略阻止加载这些非加密内容。HTTP 资源可能被中间人攻击篡改,破坏 HTTPS 页面的整体安全性。 二、推荐解决方案 1. 强制资源升级为 HTTPS •…...
transforms-pytorch4
数据通常不会直接是机器学习算法可以使用的“最终格式”。我们使用转换(transforms)来对数据进行处理,使其适合训练。 所有的 TorchVision 数据集都提供了两个参数:transform 用于修改特征,target_transform 用于修改…...
Springboot----@Role注解的作用
Role(BeanDefinition.ROLE_INFRASTRUCTURE) 是 Spring 框架中的一个注解,用于显式标记 Bean 的角色,表明该 Bean 是 Spring 容器内部的基础设施组件(如后置处理器、工具类等),而非用户直接使用的业务 Bean。其核心作用…...
SpringBoot项目报错: 缺少 Validation
目录 为什么需要Validation?如何使用Validation? 缺少validation?这不过是代码的一个小小问题,就像被风带走的一片叶子,轻轻一吹就能解决啦! 在你的项目中,如果你发现自己需要进行数据验证&…...
MySQL vs MSSQL 对比
在企业数据库管理系统中,MySQL 和 Microsoft SQL Server(MSSQL)是最受欢迎的两大选择。MySQL 是一款开源的关系型数据库管理系统(RDBMS),由 MySQL AB 开发,现归属于 Oracle 公司。而 MSSQL 是微…...
预测分析(四):面向预测分析的神经网络简介
文章目录 面向预测分析的神经网络简介神经网络模型1. 基本概念2. 前馈神经网络3. 常见激活函数4. 循环神经网络(RNN)5. 卷积神经网络(CNN) MPL结构工作原理激活函数训练方法 基于神经网络的回归——以钻石为例构建预测钻石价格的M…...
实战交易策略 篇十四:江南神鹰捕捉热点和熊市生存交易策略
文章目录 系列文章捕捉热点是股市最大的掘金术市场温度不低于50是热点产生的必要条件题材的大小和新颖程度决定热点的持续时间和涨幅炒作热点的3个阶段捕捉热点的方法与步骤操作实战案例熊市生存术“熊市最好的做法是离开股市”的说法是一句空话熊市盈利模式:不轻言底部,超跌…...
去中心化衍生品(以Synthetix为例)
去中心化衍生品(以Synthetix为例) 核心概念 合成资产(Synths): 定义:链上追踪现实资产价值的代币化合约(如sXAU追踪黄金,iBTC反向追踪比特币)。 类型: 正…...
JavaScript重难点突破:事件循环
想了解事件循环,首先要了解js中线程的概念。 宿主环境 在浏览器环境中,js实际上包含了三个部分ECMAScript、DOM(文档对象模型)、BOM(浏览器对象模型),我们最熟悉的js代码指的是ECMAScript这一…...
Python每日一题(15)
Python每日一题2025.4.4 一、题目题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 二、分析三、源代码四、deepseek 一、题目 题目描述 您需要写一种数据结构,来维护一些数(都是绝对值 1 0 9 10^9 109 以内的数)的集合,…...
#SVA语法滴水穿石# (003)关于 sequence 和 property 的区别和联系
在 SystemVerilog Assertions (SVA) 中,sequence 和 property 是两个核心概念,它们既有区别又紧密相关。对于初学者,可能不需要过多理解;但是要想写出复杂精美的断言,深刻理解两者十分重要。今天,我们汇总和学习一下该知识点。 1. 区别 特性sequenceproperty定义描述一系…...
有人DTU使用MQTT协议控制Modbus协议的下位机-含数据库
本文为备忘录,不做太多解释。 DTU型号:G780 服务器:win2018 一。DTU设置 正确设置波特率,进入配置状态,获取当前参数,修改参数,设置并保存所有参数。 1.通道1设置 2.Modbus轮询设置 二&am…...
Smart Link 技术全面解析
1.1 网络冗余技术的演进与需求 1.2 Smart Link 的核心价值与本文目标 第一章 Smart Link 技术概述 2.1 Smart Link 的应用场景与背景 2.2 Smart Link 的基本概念与组网角色 2.3 Smart Link 与传统技术的对比 第二章 Smart Link 工作原理 3.1 Smart Link 组的构成与运行机…...
【学Rust写CAD】30 Alpha256结构体补充方法(alpha256.rs)
源码 impl Alpha256 {#[inline]pub fn alpha_mul(&self, x: u32) -> u32 {let mask 0xFF00FF;let src_rb ((x & mask) * self.0) >> 8;let src_ag ((x >> 8) & mask) * self.0;(src_rb & mask) | (src_ag & !mask)} }代码分析 功能 输…...
提升 Web 性能:使用响应式图片优化体验
在现代 Web 开发中,图片通常占据页面加载的大部分带宽,如何高效管理图片资源直接影响用户体验和性能得分。Google 的 Lighthouse 工具在性能审计中特别强调“使用响应式图片”(Uses Responsive Images),旨在确保图片在…...