Cookie Consent 基础

Cookie 横幅几乎出现在每个网站上,但真正合规的并不多。很多网站的「接受」按钮被高亮放大,「拒绝」却藏在二级页面;有些横幅只是在「通知」你使用了 Cookie,而不是在「征求同意」。对于出海产品而言,Cookie Consent 不仅是法律义务,更是用户信任的基石。本文将从基础概念出发,拆解 Cookie 类型、合规要求、实现方法和最佳实践,帮助你构建一个真正合规的同意机制。

Cookie Consent 是指网站在收集、存储或处理用户设备上的 Cookie(及类似跟踪技术)之前,获取用户明确授权同意的机制。它的核心目的不是「告知用户我用了 Cookie」,而是「在用户做出知情选择之前,不加载任何非必要 Cookie」。

这个概念的法律根源主要来自两个层面:

  1. ePrivacy Directive(2002/58/EC):也被称为「Cookie Law」,要求在使用 Cookie 或类似跟踪技术之前获得用户同意。只有「严格必要」的 Cookie 可以豁免。
  2. GDPR(General Data Protection Regulation):对「同意」提出了更严格的定义——必须是自由给出、特定、知情、明确且可撤回的。

两者的关系是:ePrivacy 管「什么时候需要同意」,GDPR 管「同意的标准是什么」。在实际合规中,二者共同约束 Cookie Consent 的设计和实现。

Cookie 按用途可以分为多个类别,合规实现的核心前提是准确分类。以下表格列出了主要的 Cookie 类型及其特征:

类型说明是否需要同意典型示例
严格必要(Strictly Necessary)维持网站基本功能所必需否,豁免会话 Cookie(session)、购物车 Cookie、安全认证 Cookie
功能性(Functional)记住用户偏好以改善体验语言偏好、字体大小、地区设置
分析/性能(Analytics/Performance)收集网站使用数据Google Analytics、Plausible、PostHog
营销/广告(Marketing/Advertising)用于广告定向和效果追踪Google Ads、Facebook Pixel、TikTok Ads
社交/第三方(Social/Third-party)嵌入的社交媒体功能YouTube 嵌入、Twitter 嵌入、 Disqus 评论

需要注意的是,「严格必要」的豁免条件非常窄——只有网站离开它就完全无法运行的 Cookie 才能归入此类。一个常见的误判是:把「提升用户体验」等同于「严格必要」,这在监管实践中通常不被接受。

合规要求详解

GDPR(欧盟通用数据保护条例)

GDPR 对 Cookie Consent 的要求可以归纳为五个合法条件:

条件含义实践要求
自由给出(Freely given)不能通过胁迫或捆绑来获取同意不能因为拒绝 Cookie 就限制网站功能
特定(Specific)同意必须针对明确的目的按 Cookie 类别分别征求同意
知情(Informed)用户清楚了解同意的内容在同意前提供每个 Cookie 的用途说明
明确(Unambiguous)需要积极的确认行为不能使用预勾选的复选框
可撤回(Withdrawable)用户可以随时撤回同意提供与给予同意同样便捷的撤回入口

2024 年 1 月,欧盟数据保护监管机构联合发布了关于 Cookie 的最新指导,明确指出:即使广告投放是网站商业模式的核心,用于个性化广告的 Cookie 仍然需要单独获取用户同意,不能以「商业必要性」为由绕过同意机制。

ePrivacy Directive

ePrivacy 指令在 GDPR 之上增加了一层前置要求:

  • 在 Cookie 被设置到用户设备上之前,必须先获得同意(即「先同意再加载」原则)
  • 同意范围覆盖 Cookie、localStorage、sessionStorage 以及任何用于存储或访问设备信息的类似技术
  • 仅「严格必要」的 Cookie 和用于「通信传输所必需」的 Cookie 可以豁免

CCPA/CPRA(美国加州)

加州消费者隐私法(CCPA)及其修正案 CPRA 采取的是「opt-out」模式而非「opt-in」,与 GDPR 的默认拒绝不同:

  • 用户有权拒绝「出售或共享个人信息」,网站必须提供「Do Not Sell My Personal Information」链接
  • 不要求在 Cookie 设置前获取预先同意,但必须在隐私政策中披露 Cookie 用途
  • 2024 年起,CPRA 加强了对自动化决策和精准广告的限制

对于出海产品,如果你的用户群体同时覆盖欧盟和加州,最稳妥的做法是按 GDPR 的 opt-in 标准实现,然后额外满足 CCPA 的披露和 opt-out 要求。

实现方法

Cookie Consent 的实现有三条主要路径:使用第三方 Consent Management Platform(CMP)、自建同意组件,以及通过 Google Tag Manager + Consent Mode V2 进行间接管理。

方法一:使用 CMP(推荐大多数场景)

CMP 是目前最成熟且合规风险最低的方案。主流 CMP 工具包括:

工具特点适用场景价格参考
Cookiebot(Usercentrics 旗下)自动扫描网站 Cookie、支持 Google Consent Mode V2中小型网站快速合规免费版(≤50 页)、付费版起步约 €10/月
OneTrust企业级全功能平台、支持 A/B 测试大型企业、多品牌管理企业定价,需联系销售
CookieFirst多法规支持(GDPR/CCPA/LGPD)、界面友好面向欧洲市场的中型站点免费版(≤100 页)、付费版起步约 €22/月
Osano开源友好、API 灵活技术团队较强的中小团队免费版可用、付费版起步约 $50/月
Iubenda与隐私政策生成器集成需要同时处理隐私政策和 Cookie 同意免费版可用、付费版起步约 €29/年
CookieScript轻量级、支持 Consent Mode V2简单站点或博客免费版(≤100 页)、付费版起步约 €8/月

典型的 CMP 接入流程:

1. 注册 CMP 账号 → 添加域名
2. CMP 扫描器自动识别网站上的第三方 Cookie 并分类
3. 在 CMP 后台配置横幅样式、Cookie 分类、同意文案
4. 将 CMP 提供的 JavaScript 嵌入网站 <head>
5. 为第三方脚本标记 Cookie 类别属性(如 data-cookieconsent="marketing")
6. 调试验证:确认未同意前无 Cookie 被写入

以 Cookiebot 为例,基本的接入代码如下:

<!-- 在 <head> 中引入 Cookiebot -->
<script
  id="Cookiebot"
  src="https://consent.cookiebot.com/uc.js"
  data-cbid="你的-domain-key"
  type="text/javascript">
</script>
 
<!-- 为第三方脚本标记类别 -->
<script
  type="text/javascript"
  data-cookieconsent="marketing">
  // Google Ads 或其他营销脚本
</script>
 
<script
  type="text/javascript"
  data-cookieconsent="statistics">
  // Google Analytics 或其他分析脚本
</script>

方法二:自建同意组件

对于需要完全控制的项目,自建是可行的选择,但需要注意合规细节。核心实现逻辑:

// 1. 定义 Cookie 类别
type ConsentCategory = 'necessary' | 'functional' | 'analytics' | 'marketing'
 
interface ConsentState {
  [key: string]: boolean
}
 
// 2. 同意状态存储(使用 localStorage)
const CONSENT_KEY = 'cookie-consent'
 
function getConsent(): ConsentState | null {
  const raw = localStorage.getItem(CONSENT_KEY)
  return raw ? JSON.parse(raw) : null
}
 
function saveConsent(state: ConsentState): void {
  localStorage.setItem(CONSENT_KEY, JSON.stringify(state))
}
 
// 3. 页面加载时检查同意状态
function initialize(): void {
  const consent = getConsent()
 
  if (!consent) {
    // 未同意 → 展示横幅,不加载任何非必要 Cookie
    showConsentBanner()
    return
  }
 
  // 已同意 → 按分类加载对应脚本
  if (consent.analytics) loadAnalytics()
  if (consent.marketing) loadMarketing()
}
 
// 4. 用户做出选择后保存并加载
function handleConsent(categories: ConsentState): void {
  saveConsent(categories)
  hideConsentBanner()
 
  if (categories.analytics) loadAnalytics()
  if (categories.marketing) loadMarketing()
}

自建的注意事项:

  • 必须在同意前阻止所有非必要 Cookie 的加载。如果只是展示一个横幅但不阻止脚本执行,这在 GDPR 下仍然不合规。
  • 同意状态需要有明确的时间戳记录,便于审计。
  • 用户撤回同意后,对应的 Cookie 必须被清除,而不只是停止新写入。
  • 同意记录需要持久化,不能因为用户清除浏览器数据就丢失。

如果你的产品深度依赖 Google 生态(Analytics、Ads、Tag Manager),Consent Mode V2 是一个值得关注的技术层:

// 页面加载时设置默认同意状态为 denied
gtag('consent', 'default', {
  ad_storage: 'denied',
  ad_user_data: 'denied',
  ad_personalization: 'denied',
  analytics_storage: 'denied',
  functionality_storage: 'granted',   // 功能 Cookie 可默认允许
  personalization_storage: 'denied',
  security_storage: 'granted',        // 安全 Cookie 可默认允许
})
 
// 用户同意 analytics 后更新
gtag('consent', 'update', {
  analytics_storage: 'granted',
})

Consent Mode V2 的核心价值在于:它让 Google 标签在用户拒绝同意时仍然可以发送匿名化信号(如转化数据),而不会直接写入 Cookie。这在合规的同时保留了一定的数据可见性。但需要注意的是,Consent Mode V2 是技术适配层,它不能替代 CMP 或同意横幅本身。

最佳实践

根据英国 ICO(Information Commissioner's Office)2025 年更新的指南和行业实践,合规的 Cookie Consent 应该遵循以下原则:

设计原则

实践要点说明常见错误
接受与拒绝同等显眼两个按钮的视觉权重必须一致拒绝按钮用灰色小字或藏在二级菜单
清晰无歧义的文案明确说明每种 Cookie 的用途使用「我们重视您的隐私」等模糊表述
分类粒度控制按类型提供独立开关只提供「全部接受」和「全部拒绝」两个选项
主动同意用户必须做出积极操作滚动页面或继续浏览即视为同意
便捷的撤回入口随时可以重新打开设置面板同意后就无法再找到 Cookie 设置入口

技术实践

  1. 先同意再加载(Prior Consent):非必要 Cookie 必须在获得同意后才能设置到用户设备上。这是 ePrivacy 指令的核心要求,也是最容易被违反的规则。
  2. 同意记录持久化:保存用户同意的版本、时间戳和具体选择的类别,用于合规审计。
  3. Cookie 扫描定期执行:网站的第三方依赖会变化,CMP 通常支持定期自动扫描。
  4. 多语言适配:如果网站有多种语言版本,Cookie 横幅和同意文案也需要对应多语言。
  5. 性能考量:Cookie 横幅不应该阻塞首屏渲染。将横幅组件延迟加载,避免影响 Core Web Vitals。
  6. 移动端适配:合规要求同样适用于移动端 Web 和 App。确保横幅在小屏幕上的交互体验完整。

从 2024 年 3 月起,Google 开始对欧盟地区的广告主强制执行 Consent Mode V2。如果你的产品使用 Google Ads 或 Google Analytics,需要确保:

  • 默认同意状态中 ad_storagead_user_dataad_personalization 均设为 denied
  • 用户同意后再更新为 granted
  • 使用 CMP 集成 Consent Mode V2,而不是手动管理

案例分析

一个面向欧洲市场的 B2B SaaS 产品在上线初期使用了简单的「继续使用即同意」横幅。整改前的状态:

  • 页面加载时即设置了 Google Analytics 和 Mixpanel 的分析 Cookie
  • 横幅只有「接受」按钮,没有拒绝选项
  • 没有按类别提供细粒度控制
  • 同意状态没有版本记录

整改方案:

  1. 引入 Cookiebot CMP,自动扫描识别了 14 个第三方 Cookie
  2. 按类别分组:必要(3 个)、功能(2 个)、分析(5 个)、营销(4 个)
  3. 实现先同意再加载:将 Google Analytics 和 Mixpanel 的初始化脚本标记为 data-cookieconsent="statistics"
  4. 重设横幅 UI:接受和拒绝按钮视觉权重一致,增加「管理偏好」入口
  5. 添加同意记录:保存每次同意的时间戳和类别选择

整改后三个月内,分析类 Cookie 的同意率约为 62%,营销类约 38%。虽然分析数据的覆盖量下降,但收集到的数据质量更高(因为用户是主动同意的),同时完全消除了 GDPR 合规风险。

一个 Shopify 独立站同时服务北美和欧洲用户,面临双重合规压力:CCPA(加州)和 GDPR(欧盟)。

实施方案:

用户请求 → 判断地区
  ├── 欧盟用户 → 展示 opt-in 横幅(GDPR 标准)
  ├── 加州用户 → 展示 Do Not Sell 链接 + opt-out 提示(CCPA 标准)
  └── 其他地区 → 展示信息性横幅

技术细节:

  1. 使用 CookieFirst CMP 作为统一同意管理层
  2. 通过 Google Tag Manager 集成 Consent Mode V2
  3. Shopify 端通过 customer_privacy API 同步同意状态
  4. 在 GTM 中按同意状态控制标签触发:analytics_storagedenied 时,GA4 标签不触发
  5. 加州用户的「Do Not Sell My Personal Information」链接放在页脚,点击后直接设置 ad_storage: denied

这个方案的关键在于用一套 CMP 管理多地区合规,通过地区判断展示不同的同意界面,同时用 Consent Mode V2 确保 Google 生态的标签行为与同意状态同步。

适读画布 · 130%
Mermaid 流程图加载中...

合规检查清单

以下清单覆盖了 Cookie Consent 合规的核心检查项,可作为产品上线前的自查依据:

序号检查项说明
1非必要 Cookie 在同意前是否被阻止加载检查页面加载时是否有 Cookie 在横幅出现前就被写入
2横幅是否同时提供「接受」和「拒绝」按钮两个按钮的视觉权重必须一致
3Cookie 是否按类别分组展示至少区分:必要、功能、分析、营销
4每个 Cookie 类别是否有清晰的用途说明用户能理解每个类别收集什么数据、用于什么目的
5是否存在预勾选的复选框除了「严格必要」外,所有类别默认必须为未勾选
6用户是否可以在同意后随时撤回或修改偏好提供持久可访问的 Cookie 设置入口
7撤回同意后对应 Cookie 是否被清除不只是停止新写入,已有的也要清除
8同意记录是否持久化保存包含时间戳、版本号、选择的类别
9Cookie 横幅文案是否与实际使用的 Cookie 一致定期扫描,防止新增第三方依赖未被分类
10移动端和桌面端的横幅交互是否都正常小屏幕上按钮不能重叠或截断
11多语言版本的横幅是否都有对应翻译Cookie 说明文案需要本地化
12Google Consent Mode V2 是否正确集成默认状态为 denied,同意后才更新
13隐私政策中是否披露了 Cookie 的使用情况与 Cookie 横幅的分类和说明保持一致
14同意横幅是否影响页面性能横幅组件不应阻塞首屏渲染

参考资料

  1. GDPR.eu — Cookies, the GDPR, and the ePrivacy Directive https://gdpr.eu/cookies/

  2. UK ICO — Cookies and similar technologies(2025 更新版) https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guide-to-pecr/cookies-and-similar-technologies/

  3. InsidePrivacy — EU Supervisory Authorities Publish New Guidance on Cookies(2024 年 1 月) https://www.insideprivacy.com/eu-data-protection/eu-supervisory-authorities-publish-new-guidance-on-cookies/

  4. Cookiebot — GDPR cookies, consent, and compliance https://www.cookiebot.com/en/gdpr-cookies/

  5. Google Developers — 在网站上设置意见征求模式(Consent Mode) https://developers.google.com/tag-platform/security/guides/consent?hl=zh-cn

  6. Cookie Information — How to design a user-friendly and compliant cookie banner in 2026 https://cookieinformation.com/blog/designing-compliant-cookie-banners/

  7. Cytrio — Building a GDPR and CCPA-Compliant Cookie Banner https://cytrio.com/building-a-gdpr-and-ccpa-compliant-cookie-banner-best-practices-for-2025/

  8. Enzuzo — Best Consent Management Platforms (2026): 9 CMPs Compared https://www.enzuzo.com/blog/best-consent-management-platforms

  9. Userconsent — Mastering Cookie Consent: 5 best practices for 2025 https://userconsent.eu/articles/mastering-cookie-consent-5-best-practices-for-2025/