跳转至

计费与反作弊 (Billing & Anti-Fraud)

一句话概述

计费系统确保广告交易的准确结算,反作弊系统识别和过滤无效流量 (IVT),两者共同保障广告生态的健康和信任。


计费系统架构

flowchart LR
    A[用户行为事件] --> B[事件采集<br/>曝光/点击<br/>转化回传]
    B --> C[反作弊过滤<br/>有效性判定<br/>IVT 过滤]
    C --> D[计费引擎<br/>扣费计算<br/>预算扣减]
    D --> E[结算系统<br/>账单生成<br/>对账清算]

计费点与计费逻辑

曝光计费 (CPM)

计费触发条件:
  1. 广告素材加载完成
  2. 满足可见性标准 (MRC 标准: 50%像素可见 ≥ 1秒)
  3. 通过反作弊校验

计费流程:
  客户端渲染广告 → 上报曝光事件 → 服务端接收
  → 反作弊校验 → 有效曝光 → 扣费 → 更新预算

点击计费 (CPC)

计费触发条件:
  1. 用户真实点击广告
  2. 点击事件有效 (非机器点击)
  3. 通过反作弊校验

防重复计费:
  - 同一用户短时间内多次点击只计一次
  - 去重窗口: 通常 5-30 秒

转化计费 (CPA/oCPM)

转化回传方式:
  1. SDK 回传: 广告 SDK 自动上报转化事件
  2. S2S 回传: 广告主服务端回传转化数据
  3. API 回传: 通过平台 API 上传转化数据

转化归因:
  点击归因窗口: 通常 7-30 天
  曝光归因窗口: 通常 1-7 天

  用户点击广告 → 7天内完成转化 → 归因到该次点击 → 计费

反作弊系统 (Anti-Fraud)

无效流量分类 (IVT)

类型 说明 示例
GIVT (一般无效流量) 已知的非人类流量 爬虫、数据中心IP、预加载
SIVT (复杂无效流量) 伪装成真实用户的作弊 模拟器、设备农场、点击注入

常见作弊手段

展示作弊

手段 说明
像素填充 (Pixel Stuffing) 将广告塞入 1×1 像素
广告堆叠 (Ad Stacking) 多个广告重叠,只有顶层可见
后台展示 App 在后台时触发广告展示
自动刷新 自动刷新页面增加展示量
iframe 嵌套 在不可见的 iframe 中加载广告

点击作弊

手段 说明
点击注入 (Click Injection) 检测到 App 安装时注入虚假点击
点击劫持 (Click Hijacking) 劫持用户正常点击为广告点击
自动点击 脚本/程序自动点击广告
激励点击 付费让真人点击广告
误点击 故意设计容易误触的广告位

转化作弊

手段 说明
虚假注册 批量注册虚假账号
设备农场 (Device Farm) 大量真实设备批量操作
模拟器 使用模拟器模拟设备行为
归因劫持 窃取其他渠道的转化归因
SDK 欺骗 (SDK Spoofing) 伪造 SDK 上报的转化事件

反作弊检测方法

规则引擎

实时规则示例:
  - 同一 IP 1分钟内点击 > 10次 → 标记异常
  - 点击到转化时间 < 1秒 → 标记异常
  - 设备 ID 为空或格式异常 → 标记异常
  - 展示到点击时间 < 0.3秒 → 标记异常
  - 同一设备24小时内安装 > 5个App → 标记异常

规则引擎架构:
  事件流 → Flink 实时处理 → 规则匹配 → 标记/过滤

机器学习检测

特征工程:
  - 设备特征: 设备型号分布、系统版本、屏幕分辨率
  - 行为特征: 点击间隔、滑动轨迹、停留时间
  - 时间特征: 行为时间分布、活跃时段
  - 网络特征: IP 分布、代理检测、VPN 检测
  - 聚合特征: 同 IP 设备数、同设备广告点击数

模型:
  - 分类模型: XGBoost / LightGBM / 深度学习
  - 异常检测: Isolation Forest / Autoencoder
  - 图分析: 设备-IP-账号关联图谱,发现作弊团伙

设备指纹

设备指纹组成:
  - 硬件信息: CPU、内存、屏幕、传感器
  - 软件信息: 系统版本、安装 App 列表、字体
  - 网络信息: IP、WiFi、基站
  - 行为信息: 触摸压力、滑动速度、陀螺仪

用途:
  - 识别模拟器 (传感器数据异常)
  - 识别设备农场 (硬件信息雷同)
  - 跨 App 设备关联

归因系统

归因流程

1. 用户看到/点击广告 → 记录曝光/点击事件 (含设备ID、时间戳)
2. 用户完成转化行为 → 上报转化事件
3. 归因系统匹配:
   转化事件 ←匹配→ 最近的点击/曝光事件
4. 归因成功 → 计费

匹配逻辑:
  优先级: 点击归因 > 曝光归因
  窗口: 点击 7天 > 曝光 1天
  去重: 同一转化只归因一次

归因模型

模型 逻辑 适用场景
最后点击 归因给最后一次点击 效果广告 (最常用)
首次点击 归因给第一次点击 品牌认知
线性 所有触点平均分配 多触点分析
时间衰减 越近的触点权重越高 综合分析
数据驱动 算法自动分配 大数据量场景

iOS 归因 (SKAdNetwork / SKAN)

传统归因 (IDFA):
  点击 → IDFA 匹配 → 精确归因 ✓

ATT 后 (SKAN):
  点击 → Apple 聚合归因 → 延迟 24-48h → 有限数据

SKAN 限制:
  - 无设备级别数据
  - 转化值只有 6 bit (64 种)
  - 数据延迟 24-48 小时
  - 无法实时优化

数据对账

对账维度

内部对账:
  客户端日志 vs 服务端日志 → 差异分析
  展示日志 vs 计费日志 → 确保计费准确

外部对账:
  平台数据 vs 广告主数据 → 差异通常 < 5%
  平台数据 vs 第三方监测 → 差异通常 < 10%

常见差异原因

差异类型 原因
展示差异 可见性标准不同、统计口径差异
点击差异 去重逻辑不同、反作弊过滤差异
转化差异 归因窗口不同、归因模型不同
金额差异 计费时间点不同、汇率差异

对账流程

T+1 对账:
  1. 次日凌晨拉取双方数据
  2. 按广告计划/日期维度聚合
  3. 计算差异率
  4. 差异 > 阈值 → 告警 → 人工排查
  5. 确认后调整账单

广告可见性 (Viewability)

MRC 标准

广告类型 可见性标准
展示广告 ≥ 50% 像素在可视区域 ≥ 1秒
视频广告 ≥ 50% 像素在可视区域 ≥ 2秒连续播放
大尺寸广告 (>242,500px²) ≥ 30% 像素在可视区域 ≥ 1秒

可见性检测技术

Web 端:
  - Intersection Observer API
  - 页面可见性 API (Page Visibility)
  - 几何计算 (getBoundingClientRect)

App 端:
  - View 可见性检测 (onGlobalLayout)
  - 前后台状态检测
  - 遮挡检测

与大数据开发的关联

  • 计费数据管道: 曝光/点击/转化事件的实时采集和处理
  • 反作弊实时计算: Flink 实时规则引擎和异常检测
  • 反作弊离线分析: 大规模日志的离线分析和模型训练
  • 对账系统: T+1 对账数据的计算和差异分析
  • 归因数据处理: 归因匹配的大规模数据处理
  • 设备指纹库: 设备信息的采集、存储和查询
  • 反作弊特征: 聚合特征的实时/离线计算

面试高频问题

  1. 常见的广告作弊手段有哪些?如何检测?
  2. 广告计费系统的架构是怎样的?
  3. 什么是 GIVT 和 SIVT?
  4. 广告归因的流程是什么?常见的归因模型有哪些?
  5. 如何做广告数据对账?常见的差异原因有哪些?
  6. iOS ATT 对广告归因的影响?SKAN 的限制?

推荐阅读