WordPress Cookie 审计:主题和插件如何在你的网站中塞满追踪器
WordPress 中隐藏的 Cookie 问题
大多数 WordPress 站点所有者并没有意识到自己的网站会设置多少 Cookie。一个全新的 WordPress 安装,加上一个流行主题和少量常见插件,就很容易在不同域名下设置出15 到 30 个 Cookie,其中很多都会在访问者尚未有机会同意之前就被设置。这并不是有意跟踪的结果——而是主题和插件加载外部资源时,这些资源自带 Cookie 的累积效应。
了解这些 Cookie 来自哪里、它们的作用是什么以及如何控制它们,对于任何需要遵守 GDPR、ePrivacy 或类似法规的 WordPress 站点来说都至关重要。本指南将逐步讲解整个审计过程。
为什么 WordPress 站点会累积这么多 Cookie
WordPress 的插件架构既是它最大的优势,也是它在隐私方面最大的负担。每个插件都在半独立地运行,而大多数插件开发者关注的是功能,而不是 Cookie 合规性。以下是典型 WordPress 站点上 Cookie ��主要来源:
主题和 Google Fonts
许多 WordPress 主题会直接从 fonts.googleapis.com 加载 Google Fonts。当访问者的浏览器请求这些字体时,Google 可以设置 Cookie,并收集访问者的 IP 地址、浏览器信息以及来源页面。2022 年,一家德国法院裁定,在未获得同意的情况下从 Google 的服务器加载 Google Fonts 违反 GDPR,并对每位受影响的访问者处以 100 欧元罚款。解决方案是本地托管字体,但大多数主题的默认设置仍然指向 Google 的服务器。
页面构建器和分析工具
最流行的 WordPress 页面构建器 Elementor 会加载包括字体在内的外部资源,并可能设置使用情况跟踪 Cookie。一些 Elementor 小工具会嵌入第三方内容(YouTube 视频、Google Maps),这些内容会设置它们自己的 Cookie。即使是 Elementor 的免费版本,如果不在设置中明确禁用,也可能会发送匿名化的使用数据。
SEO 插件
Yoast SEO 和 Rank Math 本身设置的 Cookie 很少,但它们经常与 Google Search Console 集成,并鼓励添加 Google Analytics 跟踪代码。它们帮助你实现的这些分析脚本,是 Cookie 的主要来源之一。Yoast 的高级版还会与 Yoast 的���务器通信以进行 SEO 分析,这也可能涉及 Cookie。
Jetpack 和 WordPress.com 服务
Jetpack 是 WordPress 生态系统中设置 Cookie 最多的插件之一。根据启用的模块不同,Jetpack 可能会为以下功能设置 Cookie:
- 站点统计(WordPress.com stats)
- 社交分享按钮(从 Facebook、Twitter、LinkedIn 加载脚本)
- 评论系统(Gravatar Cookie)
- 安全功能(Protect 模块 Cookie)
- CDN 使用情况(WordPress.com CDN Cookie)
一个使用默认设置的 Jetpack 安装,就可能来自多个域名的 8 到 12 个 Cookie。
WooCommerce 和电商功能
WooCommerce 会设置若干被视为对电商功能“绝对必要”的 Cookie:
- woocommerce_cart_hash: 帮助 WooCommerce 知道购物车内容何时发生变化。
- woocommerce_items_in_cart: 追踪购物车中是否有商品。
- wp_woocommerce_session_*: 为每位顾客的会话包含一个唯一代码。
虽然这些通常作为绝对必要的 Cookie 而免于事先同意要求,但用于支付处理、弃购挽回和营销自动化的 WooCommerce 扩展会增加更多需要同意的 Cookie。
联系表单和 reCAPTCHA
Contact Form 7、WPForms 和 Gravity Forms 等联系表单插件通常会使用 Google reCAPTCHA 来防止垃圾信息。reCAPTCHA v2 和 v3 会设置多个 Cookie,包括 _GRECAPTCHA,并从 google.com 加载脚本,这些脚本可能会设置额外的跟踪 Cookie。这意味着,即便是一个简单的联系页面,也可能触发与广告相关的 Cookie。
缓存插件
WP Super Cache、W3 Total Cache 和 WP Rocket 等缓存插件会设置它们自己的 Cookie 来管理缓存行为。这些通常是功能性 Cookie(例如,为已登录用户绕过缓存),但仍然需要在你的 Cookie 政策中进行说明。
如何对你的 WordPress 站点进行 Cookie 审计
彻底的 Cookie 审计需要从访问者的视角扫描你的网站。流程如下:
步骤 1:使用浏览器开发者工具
在 Chrome 中打开你的网站,进入 DevTools > Application > Cookies,检查为你的域名以及第三方域名设置的所有 Cookie。在无痕窗口中执行此操作,以模拟首次访问者。记录每个 Cookie 的名称、域名、过期时间,以及它是第一方还是第三方 Cookie。
步骤 2:使用专用 Cookie 扫描工具
���动检查可以捕获页面加载时设置的 Cookie,但会遗漏交互行为(点击按钮、提交表单、滚动页面)后设置的 Cookie。像 Cookiebot 的免费扫描器、CookieYes 扫描器 或 EditThisCookie 这类浏览器扩展可以提供更全面的结果。请在多个页面上运行扫描,而不仅仅是首页。
步骤 3:为每个 Cookie 分类
将发现的 Cookie 分组到标准类别中:
- 绝对必要: 会话 Cookie、身份验证、安全性、购物车功能。这些不需要同意。
- 功能性: 语言偏好、用户界面自定义。从技术上讲需要同意,但风险较低。
- 分析类: Google Analytics、WordPress.com stats、热图工具。需要同意。
- 营销/广告: Google Ads、Facebook Pixel、再营销 Cookie。需要同意,并且是最优先阻止的对象。
步骤 4:将 Cookie 映射到其来源
对于每个 Cookie,确定是哪个主题或插件负责设置的。这正是 WordPress 变得复杂的地方——单个页面可能会加载来自 5 个不同插件的脚本,每个插件都在设置自己的 Cookie。可以暂时逐个停用插件,以识别哪个插件设置了哪些 Cookie。
���见 Cookie 来源及其解决方案
以下是最常见的 WordPress Cookie 来源及其应对方法的快速参考:
- Google Fonts: 切换为本地托管字体。像 OMGF 这样的插件或主题设置可以自动完成这一操作。
- Google Analytics: 必须在获得同意之前被阻止。这由你的 CMP 负责处理。
- YouTube 嵌入: 使用 youtube-nocookie.com 域名替代 youtube.com。这可以阻止大部分跟踪 Cookie。
- Google Maps: 仅在获得同意后加载,或者使用静态地图图片作为占位。
- Facebook Pixel: 必须在获得营销类同意之前被阻止。
- reCAPTCHA: 考虑使用 hCaptcha(更注重隐私)或无需外部脚本的 honeypot 技术作为替代方案。
在 WordPress 中设置 FlexyConsent 插件以实现完整合规
一旦你完成了 Cookie 审计并了解需要控制的内容,在 WordPress 上实施 FlexyConsent 就很简单了。
FlexyConsent 的 WordPress 插件直接集成到你的 WordPress 管理后台,提供原生配置体验:
- 从插件目录安装: 在“Plugins > Add New”中搜索“FlexyConsent”,安装并启用。无需手动上传文件。
- 连接你的网站: 在插件设置中输入你的 FlexyConsent 站点 ID。插件会自动将同意脚本注入到正确的位置——在任何其他第三方脚本之前。
- 配置 Cookie 类别: 将你审计得到的 Cookie 映射到 FlexyConsent 的同意类别。插件在 WordPress 管理后台中提供可视化界面来完成这一操作。
- 设置脚本阻止: FlexyConsent 通过 Consent Mode V2 自动管理 Google 标签。对于其他脚本(Facebook Pixel、自定义跟踪),插件提供脚本阻止规则,在相应的同意类别被授予之前阻止其执行。
- 彻底测试: 使用无痕窗口验证在获得同意之前非必要 Cookie 被阻止,并确认在获得同意后所有功能都能正常工作。
作为具有 IAB TCF 2.3 支持的Google 认证 CMP,FlexyConsent 会自动处�� WordPress Cookie 合规中最复杂的部分。Consent Mode V2 信号会在无需额外标签配置的情况下发送到 Google 服务,而地理定位功能则确保来自不同地区的访问者看到适合其所在地区的同意体验。
核心要点: WordPress 的灵活性是以隐私为代价的——每一个主题和插件都可能引入需要同意的 Cookie。系统化的审计加上正确的 CMP 实施,是实现合规的唯一可靠途径。不要以为你的网站只设置了你知道的那些 Cookie;现实几乎总是比预期要复杂得多。