Privacy Statnive Live · Parhum Khoshbakht

Global Privacy Control 与混合同意模式:一种可运行的模式

GPC 在客户端被遵守,混合模式允许部分表面询问、其余不询问。本文介绍该模式、统计脚本 API,以及为何混合模式是 2026 年的现实默认。

本文为隐私研究内容,不构成法律意见。完整免责声明见页脚。

TL;DR

  • GPC 自 2026 年 1 月 1 日起在 CCPA § 7025(c)(6) 下具有约束力 —— 企业必须可见地指示该信号已被遵守。12 个美国州要求承认 GPC 或统一选择退出信号。
  • GPC 在 EU 法下属于推定 —— 尚未具约束力。 拟议中的 Digital Omnibus 第 88b 条会在浏览器标准通过后六个月,向遵守该信号的运营者授予合规推定。
  • 双层执法是正确模式 —— 通过 data-statnive-honour-gpc="1" 在客户端短路提供最低摩擦路径,叠加服务器端 consent.respect_gpc 强制作为纵深防御。
  • 混合模式由服务器强制,而非客户端信任 —— 服务器持有权威同意记录,浏览器无法在同意状态上撒谎。
  • WordPress 插件目前仅提供 2 种同意模式;Statnive Live 拥有全部 4 种。 截至本文撰写时,混合模式仅在 Statnive Live 上可用。

为什么 2026 年 GPC 重要

2009 年 ePrivacy 修订赋予 EU 居民拒绝在其终端设备上存储与访问的权利。十六年后,大多数运营者请求拒绝的方式 —— 一个带有藏起来的拒绝按钮的 Cookie 横幅 —— 正是产生 CNIL 2025 年 9 月 1 日双重 3.25 亿 / 1.5 亿欧元处罚以及荷兰 AP 2024 年 7 月 16 日对 Kruidvat 处以 60 万欧元罚款的监管风险源。被罚的是横幅,而不仅仅是横幅背后的 Cookie。

Global Privacy Control 是浏览器层面的替代方案。在每一次出站 HTTP 请求上设置的一个位 —— Sec-GPC: 1 —— 表达:此访客拒绝非必要跟踪,不再需要按站点的横幅。 加州 CCPA 在 CCPA 监管 § 7025 下将 GPC 视为具有法律约束力的信号。CPPA 于 2025 年 9 月最终确定 2026 年监管包;§ 7025(c)(6)(自 2026 年 1 月 1 日生效)还要求企业可见地指示该信号已被遵守(例如 “Opt-Out Request Honored” 消息)。截至 2026 年初,12 个美国州要求承认 GPC 或统一选择退出信号;2025 年 9 月,加州、科罗拉多、康涅狄格州司法部长宣布对未遵守该信号的企业开展协调调查扫描。 拟议中的 Digital Omnibus 第 88b 条将在技术标准通过后向遵守 GPC 的 EU 运营者授予合规推定 —— 这正是 EU 自 2018 年以来 Cookie 改革所需要的。

下文是面向运营者的模式:GPC 是什么、不是什么;Statnive Live 如何在两层遵守它;为什么「混合」同意模式是混合监管需求站点 2026 年的现实默认;面向集成自有横幅运营者的统计脚本 API;WordPress 插件的差异点;以及验证 GPC 确实被遵守的端到端测试计划。

GPC 是什么,不是什么

Global Privacy Control 是一个 HTTP 头和对应的 navigator.globalPrivacyControl JavaScript 属性。两者传达同一个位:此访客选择退出其个人信息的出售与共享,并拒绝非必要跟踪。技术规范在 globalprivacycontrol.github.io/gpc-spec

该信号由浏览器设置,通常通过隐私扩展(DuckDuckGo Privacy Essentials、Privacy Badger)或默认由注重隐私的浏览器(Brave、Mullvad Browser、DuckDuckGo Browser)设置。Chrome —— 截至 2026 年中约占全球 65% 市场份额 —— 没有原生 GPC 支持,也未承诺;Safari 和 Microsoft Edge 同样缺少原生支持;Firefox 在 privacy.globalprivacycontrol.enabled 偏好后面内置支持。结果是 GPC 触达 EU 流量中有意义但少数的份额 —— 随着隐私意识用户采纳工具,该份额在增长,而拟议的第 88b 条会在技术标准通过后要求主要浏览器提供 GPC 能力。2026 年 5 月 5 日发表的一项同行评议研究得出结论:GPC 可以减少 EU 同意横幅 —— 但仅部分减少,且需要 EU 监管者和立法者采取明确步骤厘清该信号如何映射到现行数据保护法。

GPC 是什么: 在加州法下具有约束力的隐私偏好,在拟议的第 88b 条下为推定隐私偏好。遵守它的运营者无需再问访客 —— 访客已经答复。

GPC 不是什么: 运营者更广合规姿态的替代品。遵守 GPC 并不消除运营者的 GDPR 第 13 条透明度义务、第 21 条反对权端点、与下游供应商的第 28 条处理者协议或在适用时的第 35 条 DPIA。GPC 是同意 / 拒绝决策的输入之一;GDPR 其余机制依然适用。

GPC 不是什么,第二点: EU 辖区下自动开启。GDPR 当前立场是 GPC 不是具约束力的同意撤回 —— 运营者可以选择遵守(多数注重隐私的网站统计工具都遵守),但并不在法律上被强制。 拟议的第 88b 条会在技术标准通过六个月后改变这一点。提前规划的运营者现在就默认遵守 GPC,以避免后续政策切换。

GPC 执法的两个层

Statnive Live 在两层遵守 GPC —— 客户端和服务器端。两层都重要,因为它们以不同方式失败。

客户端短路。 统计脚本在初始化时检查 navigator.globalPrivacyControl === true。如果该属性为 true并且运营者通过 script 标签上的 data-statnive-honour-gpc="1" 属性启用了 GPC 遵守,统计脚本会短路为空操作函数。不发送统计事件。不进行服务器往返。访客浏览器不外泄任何数据。

这是对希望获得最低摩擦 GPC 实现的运营者的隐私保护默认。它省下服务器往返,省下访客带宽,让 GPC 响应可由任何拥有浏览器 DevTools 的人审计(无出站请求发出)。

服务器端强制。 ingest 端点在每个进入的请求上检查 Sec-GPC: 1 头。若站点策略 consent.respect_gpc = true 且头被设置,该请求在计算访客标识符之前被丢弃。不为拒绝的访客创建假名化记录 —— 数据库里没有任何东西需要稍后删除,因为什么也没写入。

服务器端层是纵深防御,捕获客户端层遗漏的情形:通过服务器端渲染到达的访客(访客机器上未运行任何统计脚本);统计脚本在能够短路前被扩展拦截的访客;使用 CLI HTTP 客户端的访客;以及浏览器没有 JavaScript GPC 属性但设置了 HTTP 头的访客。

两层叠加。客户端层是运营者首选路径;服务器端层是无论浏览器中发生了什么都被遵守的保证。

为什么存在「混合」模式

consent-free 部署是最简单的心智模型:无横幅、无 Cookie、仅服务器端受众测量。consent-required 部署是另一种最简单的模型:横幅阻止统计脚本直到访客接受。两者都适用于监管需求统一的站点。

现实的 2026 年站点监管需求是混合的。营销页面需要无同意受众测量;结账流程需要 CNIL 第 16 号指南受众测量豁免不覆盖的电商归因;登录后的仪表盘根本不需要统计,因为用户是已知客户。

hybrid 是面向混合监管需求站点的同意模式。模式如下:

  • 访客与横幅交互之前: 运行匿名聚合受众测量。无 Cookie、每日轮换盐、仅保留主机的引荐来源、IP 截断、User-Agent 最小化 —— 默认即 consent-free 架构
  • 访客接受同意之后: 统计脚本升级到全归因。向浏览器发出 Cookie ID;保留按访客的会话连续性;捕获电商事件;流转转化归因。
  • 访客拒绝(或接受后撤回)之后: 统计脚本回退到匿名模式。无 Cookie;无按访客连续性。若访客此前曾接受,现有 Cookie ID 通过抑制列表在服务器端被作废。

这与 Google 2024 年 3 月推出的「Consent Mode v2」是同一模式,但有一个关键差异:Statnive Live 的混合模式由服务器强制,而非客户端信任。Google 模式在每个事件上发送指示同意状态的参数;接收服务器被信任执行正确处理。Statnive Live 的混合模式在 ingest 层基于服务器自己的访客同意记录应用同意状态。浏览器无法在是否给出同意上撒谎,因为服务器持有权威同意记录。

运营者的第一天负担在 hybrid 下比 consent-required 下更低。受众指标无论如何都流动。横幅成为通往更多归因的路径,而非任何归因的关卡。

统计脚本 API

运营者通过调用统计脚本暴露的两个函数,将自己的同意横幅与 Statnive Live 集成:

// Visitor accepts consent (typically from a banner's Accept button)
statnive.acceptConsent(csrfToken);

// Visitor withdraws consent (from the privacy policy's withdraw link)
statnive.withdrawConsent(csrfToken);

两个函数都向 /api/privacy/consent POST 一个由运营者会话派生的 CSRF 令牌。服务器更新访客的同意状态并输出 privacy.consent_givenprivacy.consent_withdrawn 审计事件。后续统计事件在服务器端 ingest 层使用新的同意状态。

运营者的横幅是运营者的 UI。Statnive Live 不提供横幅 —— 同意管理平台有几十种,多数运营者都有自己偏好的一个。集成表面是两个函数调用和一个审计事件流。原文用词、横幅颜色以及「拒绝与接受一样简单」的实现(CNIL 已多次因此罚款)都是运营者的责任。

对于使用第三方 CMP(Cookiebot、OneTrust、Sourcepoint、Didomi)的运营者,集成模式相同:CMP 的 onAcceptonReject 回调调用 statnive.acceptConsent()statnive.withdrawConsent()。CMP 继续管理按供应商的同意 UI;Statnive Live 的贡献是服务器强制的状态。

WordPress 插件的差异点

关于产品对等的提醒,这对在两款 Statnive 产品间选择的运营者很重要。

Statnive Live(独立的网站统计服务器)提供全部四种同意模式 —— permissiveconsent-freeconsent-requiredhybrid —— 以及上文描述的服务器强制同意控制。11 辖区枚举加硬规则验证适用;GPC 双层执法适用;四模式 × 11 辖区矩阵是完整表面。

Statnive WordPress 插件目前提供两种同意模式 —— cookielessdisabled-until-consent —— 大致对应 Statnive Live 的 consent-freeconsent-required 模式。插件在客户端遵守 GPC 与 DNT,并遵守 WordPress 隐私 API 进行 DSAR 登记。它目前提供 hybrid 模式或完整的 11 辖区枚举。

面向运营者的决策树:

  • 监管需求统一的站点(所有表面都 consent-free,或所有表面都横幅控制):WordPress 插件的两种模式足够。
  • 监管需求混合的站点(无同意营销页面 + 同意控制结账,或 EU + 非 EU 流量的辖区差异):Statnive Live SaaS 或自托管产品是正确选择。如果插件范围是 WordPress 后台页面浏览,而 Statnive Live 范围是公开前端,则两者可在同一站点共存。

自托管与私有 EU SaaS 对比文章WP 插件与 Statnive Live 对比更详细地覆盖更广决策。就本文涉及的 GPC 与混合同意细节而言,Statnive Live 是提供完整支持的产品;WordPress 插件具有更简单的子集,是监管表面也更简单的运营者的正确选择。

从现有横幅迁移的路径

对于已经有 Cookie 横幅(无论自建还是通过 CMP)并希望迁移到 hybrid 模式同时遵守 GPC 的运营者,一份可运行的迁移序列:

阶段 1(第 1 周):在不更改横幅的前提下打开 GPC 遵守。 在 Statnive Live script 标签上加上 data-statnive-honour-gpc="1";在站点策略中设置 consent.respect_gpc = true。对非 GPC 访客横幅继续触发;GPC 访客在见到横幅前就被空操作化。这是无回归变更 —— 此前通过横幅拒绝的访客仍然被拒绝;此前通过横幅接受的访客仍然被接受;此前看到横幅的 GPC 访客(很可能通过横幅拒绝)现在在横幅渲染前就被短路。

阶段 2(第 2-3 周):切换到 hybrid 模式。 把站点策略 consent_modeconsent-required 改为 hybrid。统计脚本现在在与横幅交互之前收集匿名聚合指标,访客接受后升级到全归因。运营者第一天的流量可见度跃升 —— 55.6% 的横幅拒绝税(参见 Plausible 的 Cookie 横幅研究)在受众测量层降至接近零。

阶段 3(第 3-4 周):把运营者的横幅接到统计脚本 API。 把 CMP 现有的 onAccept 回调(当前打开第三方标签)替换为调用 statnive.acceptConsent(csrfToken) 的回调。横幅 UX 对访客没有变化;运营者底层的跟踪机制过渡到服务器强制的状态。

阶段 4(第 4 周以后):退役横幅曾管控的 Cookie。 一旦运营者确认同意流在服务器端正常工作,原横幅曾管控的第三方 Cookie(广告像素、再营销标签)可以审查和清理。对于全力走无同意的运营者,这一步彻底退役横幅(前提是 CNIL 第 16 号指南和 § 25 TDDDG 条件累计满足)。对于保留电商归因的运营者,横幅保留但承担的 UX 权重大幅下降。

迁移在每一步都可回退。希望在任一阶段退出的运营者可以回退站点策略变更;审计日志保留了哪一时刻处于哪种模式的同步证据。

端到端测试计划

一份验证 GPC 在两层都被遵守、混合模式行为正确的可运行测试计划:

测试 1:客户端短路。

  1. 安装将 navigator.globalPrivacyControl = true 设置的浏览器扩展(DuckDuckGo Privacy Essentials,或设置 Firefox privacy.globalprivacycontrol.enabled 偏好)。
  2. 在 DevTools Console 输入 navigator.globalPrivacyControl 确认属性已设;预期 true
  3. 加载运营者站点。
  4. 打开 DevTools → Network → 过滤 /api/track
  5. 预期:零出站请求到统计端点。统计脚本已短路。

测试 2:服务器端强制。

  1. 使用 curl 或任意 HTTP 客户端直接向运营者统计端点 POST:
    curl -X POST https://app.statnive.live/api/track \
      -H 'Sec-GPC: 1' \
      -H 'Content-Type: application/json' \
      -d '{"site_id": "...", "page": "/test"}'
  2. 预期:HTTP 204 并带有 X-Statnive-GPC-Honoured: 1 头。请求被接受,但事件在计算访客标识符之前被丢弃。
  3. 检查运营者的 events_raw ClickHouse 表。预期:无行匹配测试页面和时间戳。

测试 3:混合模式同意前匿名。

  1. 禁用 GPC(移除扩展;重置 Firefox 偏好)。
  2. 在干净配置中加载运营者站点。
  3. 不与横幅交互。 浏览 2-3 个页面。
  4. 检查 events_raw 中该测试会话。预期:行存在,但 cookie_id_hashNULLvisitor_signature 为每日轮换盐派生值。

测试 4:混合模式同意后升级。

  1. 继续测试 3。接受横幅。
  2. 再浏览 2-3 个页面。
  3. 检查 events_raw 中同意后行。预期:cookie_id_hash 已填充(h: 前缀 + SHA-256),同意后各行该值相同。

测试 5:混合模式撤回后回退。

  1. 继续测试 4。撤回同意(从 DevTools Console 调用 statnive.withdrawConsent(csrfToken),或点击运营者隐私政策中的撤回链接)。
  2. 检查 privacy.consent_withdrawn 审计事件。预期:与访客签名和时间戳一起输出。
  3. 再浏览 2-3 个页面。
  4. 检查 events_raw 中撤回后行。预期:cookie_id_hash 再次为 NULL;访客回退到匿名模式。

测试 6:审计日志完整性。

  1. 检查整段会话的审计日志。
  2. 预期事件顺序:privacy.consent_given(测试 4)、privacy.consent_withdrawn(测试 5)。退出、DSAR 访问和 DSAR 删除事件不出现,因为未在本测试中行使。

完整测试计划在一个浏览器会话加一次 curl 调用内完成。一次运行并截图的运营者拥有了检查或内部审计所需的演示包。

这给运营者带来什么

实际成果:

  • GPC 在两层都被遵守 —— 客户端短路避免往返,服务器端强制是纵深防御,捕获客户端层遗漏的一切。
  • hybrid 模式收回 consent-required 部署因 55.6% 横幅拒绝税而失去的受众指标,同时为同意访客保留全归因路径。
  • 服务器强制的同意状态取代客户端信任,消除「浏览器在同意上撒谎」的失败模式 —— Google Consent Mode v2 模式正暴露此风险。
  • 两函数统计脚本 API,干净地与任意横幅 —— 自建或第三方 CMP —— 集成,并输出结构化审计追踪。
  • 4 阶段可回退迁移,让运营者无需一刀切切换日就能离开遗留横幅。
  • 6 步端到端测试计划,验证实现在生产中工作。

它不提供:开箱可用的横幅 —— 那是运营者的 UI 选择。在站点策略遵守 GPC 的 EU 辖区中覆盖不愿意访客 GPC 信号的方式 —— 按设计,服务器端层不可覆盖。与 WordPress 插件混合模式的兼容 —— 因为 WordPress 插件目前不提供混合模式(决策树章节覆盖何时使用哪款产品)。

该做什么,不该做什么

该做不该做
启用两层 —— script 标签上 data-statnive-honour-gpc="1" 加站点策略 consent.respect_gpc = true仅在客户端遵守 GPC —— 隐私扩展可能在短路触发前拦截统计脚本;服务器端层是纵深防御。
对监管需求混合的站点默认 hybrid 模式 —— 同意前匿名聚合、同意后全归因、服务器强制状态。即使营销页面不需要归因,也对整站默认 consent-required —— 您会无谓损失 55.6% 的访客可见度。
当 GPC 被遵守时可见地指示(按 2026 年 1 月 1 日 CCPA § 7025(c)(6) 更新)。静默处理 GPC,并假定访客无需确认。CCPA 现在要求可见指示。
statnive.acceptConsent()statnive.withdrawConsent() 接到现有横幅 / CMP 的 onAccept / onReject 回调。依赖每个事件上客户端信任的同意参数(Google Consent Mode v2 模式)。浏览器可以撒谎;服务器的权威同意记录不会。
对 EU + 美国流量站点,无论辖区都默认 consent.respect_gpc = true —— 它满足 CCPA 和其余 11 个美国州,加上 EU consent-free 模式。把 GPC 当作仅美国相关。拟议第 88b 条会在标准通过后让 EU 遵守成为推定;现在就遵守是向前兼容的姿态。

结论

Global Privacy Control 是拟议 Digital Omnibus 第 88b 条将授予合规推定的浏览器层机制。技术模式简单:运营者服务器在 ingest 时遵守一个一位信号。架构模式是服务器强制,而非客户端信任。迁移模式可回退,分 4 个阶段。测试模式装在一个浏览器会话内。

Statnive Live 默认提供以上全部。四种同意模式、双层 GPC 遵守、服务器强制混合模式、两函数统计脚本 API、DSAR 文章覆盖的八个隐私审计事件,以及一份 ~2.0 KB 压缩 / ~0.9 KB gzip 的第一方统计脚本,全部完成。

WordPress 插件是面向监管姿态统一、采用 WordPress 形态部署的运营者的正确选择。Statnive Live 是面向监管需求混合或非 WordPress 栈运营者的正确选择。对两者而言,GPC 信号都被遵守。

更广框架,请参见 2026 年 EU 无同意网站统计实战手册。具体国家差异,请参见 CNIL 第 16 号指南和 § 25 TDDDG 文章。关于 Digital Omnibus 第 88b 条统一 EU 内 GPC 遵守的新闻视角,请参见 Digital Omnibus 文章。与同意状态集成的数据主体权利表面,请参见 DSAR 文章。


本文为隐私研究内容,不构成法律意见。 GPC 在加州 CCPA 下是具约束力的隐私信号,在拟议 Digital Omnibus 第 88b 条下是推定信号;在现行 EU 法下并非具约束力的同意撤回。选择遵守 GPC 的运营者出于策略选择,由上述实现模式支持。每位 Statnive 客户仍是数据控制者,对其配置和 DPIA 负责。 在发布前请与所在司法辖区的合资格法律顾问交叉确认。

监管参考的状态截至 2026 年 5 月 13 日:GPC 规范在 globalprivacycontrol.github.io/gpc-specCCPA 法令自 2026 年 1 月 1 日生效 —— § 7025(c)(6) 要求可见地指示 GPC 信号已被遵守;CPPA 于 2025 年 9 月最终确定 2026 年监管包;截至 2026 年初,12 个美国州要求承认 GPC / 统一选择退出信号;2025 年 9 月加州 / 科罗拉多 / 康涅狄格州司法部长协调的 GPC 执法扫描;Digital Omnibus COM(2025) 837 final(2025 年 11 月 19 日委员会提案)第 88b 条 —— 截至 2026 年 5 月 13 日,欧洲议会全体未对 COM(2025) 837 表决;EDPB-EDPS 联合意见 2/2026,2026 年 2 月 11 日;ePrivacy 指令 2002/58/EC 及其国家转置;EDPB 指南 2/2023 v2.0,2024 年 10 月 7 日(生效中)。

免费获取 Statnive