知识

如何实时检测195多个国家的广告欺诈

你无法通过仪表盘来检测它正在报告的欺诈行为。检测意味着从真实用户的视角出发,在每个市场持续检查广告位。

James Meadow

James Meadow

2026年9月1日 · 1 分钟阅读

广告欺诈通常不是被发现的。它是被那些正在被欺诈的系统所“报告”的,而等到那时,预算已经花掉了。结构性的问题在于,投放你广告的平台和网络,同时也是你用来评判它们表现的数据来源,所以在这个闭环内部出错的任何事情,从闭环内部是看不见的。

独立检测意味着核实当一个真实地点的真实用户加载页面时实际发生了什么,并且是持续进行,而不是每季度审计一次。以下是这在实践中所涉及的内容。

你要寻找的是什么

欺诈有几种形式,每一种都留下不同的特征,这一点很重要,因为你的检测必须寻找正确的目标。

**域名欺骗(Domain spoofing)**歪曲了广告实际投放的位置,导致本应向优质发布商计费的展示,实际上是在低质量网站上投放的。其特征是报告中的投放位置与你自己检查发现的页面之间的不匹配。

**广告堆叠(ad stacking)和像素填充(pixel stuffing)**将多个广告隐藏地叠放在一起,或者以过小而无法看到的空间渲染它们,从而使没有任何人能真正看到的广告也被计入展示次数。其特征是几何上的:一个在报告中具有真实尺寸、但在页面上实际尺寸几乎为零的元素。

地理位置误报将流量计费为来自某个它实际并非来自的市场,这在你为该市场支付了溢价时尤为重要。这种特征只有在你从该市场内部进行检查时才会显现。

**无效流量(Invalid traffic)**是伪装成人类的、由机器生成的展示和点击。其特征是行为性和统计性的,而不是在任何单次检查中可见的。

创意和落地页问题与彻头彻尾的欺诈并存:错误的创意、过期的优惠、损坏的落地页,或者在独占位置上出现竞争对手的广告。这在法律意义上不算欺诈,但浪费的资金是一样的,而且是通过同样的机制被检测出来的。

为什么检测需要真实的观测点

核心机制说起来很简单。广告投放是有针对性的,所以投放的内容取决于看起来是谁在请求:他们的国家和城市、设备、语言,通常还有他们表面上的历史记录。要看到圣保罗一个手机用户所看到的内容,请求必须看起来就是来自那个人。

这就是为什么数据中心流量无法完成这项工作的原因。广告平台和欺诈操作者都会区别对待已知的托管地址段,所以来自云区域的检查可能会被投放一个干净、通用的页面版本,而欺诈行为继续针对真实用户进行,或者干脆被直接屏蔽。结果就是一个报告一切正常的验证系统。

住宅出口使每次检查看起来都像是来自被检查市场的普通访问者,这正是广告验证代理作为一个品类存在的全部依据。地址的选择与地理位置同样重要,因为一个被标记过或者与数据中心相邻的地址会得到不同的体验,详见什么是IP信誉以及识别被当作住宅IP出售的数据中心IP

覆盖多个市场

如果你在多个国家采购广告,你就必须在多个国家进行检查,而一个诚实的限制是:覆盖范围是按市场划分的,而不是全球统一的。一个覆盖195个国家的网络使这成为一个配置问题,而实际工作在于决定在哪里采样、多久采样一次,因为持续检查所有地方既没有必要也负担不起。

一个合理的分配方案会权衡三件事:支出,即占用大部分预算的市场应获得大部分检查;风险,即有过差异记录的市场或合作伙伴应获得更多检查;以及变化,即新推出的活动和新的投放位置在上线时应被大量采样,之后再逐渐减少。如果一个活动是按城市定向的,那么检查也必须如此,详见城市级定向,而且在承诺全球覆盖之前,值得了解不同市场的可用性差异,详见国家可用性

“实时”在这里到底意味着什么

在这个语境下,实时并不是指亚秒级。它意味着闭环闭合的速度要足够快,让你能在花费造成实质影响之前叫停,对大多数项目而言,这是几分钟到几个小时,而不是等到下个月的报告。

有四个因素决定你能否达到这一点。

采样频率,这是主导因素。在一组轮换的投放位置上持续采样,胜过每天进行一次彻底扫描,因为它限定了一个问题能在多长时间内不被发现地持续存在。

检测延迟,即一次检查完成并被评估所需的时间。住宅请求比数据中心请求慢,所以要为此留出预算,并保持检查精简,详见降低延迟

评估,这应该是自动化的。一张没有人看的截图不算检测。与预期的比对必须在代码中运行。

**行动。**以仪表盘结束的检测只是监控;以暂停某个投放位置或开一张工单结束的检测才是控制。要提前决定哪些发现会触发哪些响应。

构建闭环

无论规模大小,其形态都是一样的。

从一个预期开始,因为没有预期你就无法检测出差异。对于每个投放位置,你应该知道它本应投放的域名、本应渲染的创意、它所定向的市场,以及它本应到达的落地页。

然后从该市场内进行检查,采集足够用于采取行动的证据:解析后的页面、广告元素及其实际渲染尺寸、创意、经过重定向后的落地页URL,以及一张截图。证据很重要,因为这个系统的输出往往是与合作伙伴之间关于钱的对话,而没有截图佐证的说法只是一种意见。

def check_placement(placement, country, city=None):
    ctx = browser_context(country=country, city=city)      # residential exit
    page = ctx.new_page()
    page.goto(placement["url"], wait_until="networkidle")

    ad = page.query_selector(placement["selector"])
    box = ad.bounding_box() if ad else None

    return {
        "found":      ad is not None,
        "visible":    bool(box and box["width"] > 1 and box["height"] > 1),
        "dimensions": box,
        "creative":   ad.get_attribute("src") if ad else None,
        "final_url":  page.url,
        "screenshot": page.screenshot(),
        "market":     {"country": country, "city": city},
        "checked_at": now(),
    }

然后与预期进行比对并分类:广告缺失、广告存在但实际上不可见、创意错误、域名错误、市场错误,或者落地页损坏。每一种情况都对应不同的响应,而正是这种分类使得警报变得可以采取行动,而不是徒增噪音。

最后,要监控你自己采集系统的健康状况,因为一个悄悄停止返回结果的市场,看起来和一个完全没有问题的市场一模一样。这种区别正是验证系统与虚假安全感之间的差别,也是大规模监控代理健康状况中所强调的纪律。

保持诚实

有两个约束值得明确说明。

这是测量,而不是干预。验证意味着观察被投放的内容,而不是点击广告去测试它们、制造展示,或者做任何会自行扭曲投放或支出的事情。要礼貌地控制节奏,让你的检查相对于真实流量而言只是一个可忽略的误差,而不是给你正在验证的发布商带来负担。

并且要把发现当作有待审查的证据,而不是最终定论。一个缺失的广告可能是一个合理地未被填充的广告位,一个地理位置不匹配可能是没人告诉你的定向变更,一个错误的创意可能是一次已经轮换的排期。价值就在于模式和证据的采集,而这正是让与合作伙伴的对话变得富有成效的关键。

总结

你无法从正在报告欺诈的系统内部检测出广告欺诈,所以检测意味着从你所采购的市场中的真实用户观测点进行独立检查。要了解每种欺诈类型的样貌,因为检查必须寻找正确的特征:域名不匹配、没有真实尺寸的元素、不匹配的市场、不该出现在那里的创意。持续采样,并按支出、风险和新近程度来加权覆盖范围,而不是试图检查一切。采集证据,因为输出通常是一场关于钱的对话。将比对自动化,并为每种分类结果关联一个行动,同时监控你自己的采集系统,以免把一个静默的市场误认为是一个干净的市场。

观测点是无法临时凑合的部分:广告验证代理将每次检查都放置在其所属的市场中,运行在具有国家和城市定向能力的住宅代理之上,并配有适合持续采样项目的按GB计价方案。

准备好开始了吗?

试用 Shifter 住宅代理,205M+ 个 IP,195+ 个国家,低至 $0.75/GB。

立即开始