本文约 4,885 字,预计阅读 13 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:两个插件都叫「GDPR」,做出来的结果差一个数量级
在 WordPress 后台搜 “GDPR Cookie Consent”,排在最前面的两个免费结果是:Complianz – GDPR/CCPA Cookie Consent(Really Simple Plugins 出品,安装量 10 万+)与 CookieYes。两者都能弹出 consent banner、都能做分类、都有漂亮的拖拽样式编辑器。很多站长随手装一个上线,直到有一天收到客户律师函或平台审核不通过,才发现差别巨大。
最大的能力分水岭有两个:一是是否真的阻断了脚本(前文讲过事前阻断是合规核心),二是是否按访问者所在地区自动套用不同规则——德国要求 opt-in 且 TMG/TTDSG 更严、加州 CCPA 允许 opt-out 模式、巴西 LGPD 又不一样。Complianz 有完整的区域(region)规则引擎;CookieYes 免费版在这块相对弱(付费版支持 Geo-targeting)。
本文不做主观打分,而是摆出两者在实现机制上的具体差异,让你按自己的站点形态做选择。
原理分析:同意管理平台(CMP)的三个核心能力
| 能力 | Complianz GDPR/CCPA | CookieYes(免费版) |
|---|---|---|
| 区域规则 | 内置 EU / UK / US / CA / BR / ZA 等规则模板,按访问者 IP 判定 | 主要为单一(EU 风格)规则,地区定制在付费版 |
| 脚本阻断 | 自动扫描并改写 known third-party embeds(YouTube、Maps、GA、FB Pixel、Hotjar) | 通过类别标签 + 手动 text/plain 配合,免费版覆盖有限 |
| 法律文档 | 内置 Cookie Policy / Privacy Statement(EU/US)向导式生成器 | 提供 Cookie Policy 短代码,文档生成器在付费版 |
| 统计展示 | 内置 consent statistics 图表(同意率随时间) | 有简易 dashboard,深度在付费版 |
do_not_track / GPC |
支持 Global Privacy Control 信号 | 支持有限 |
| 集成 | 与 WPML/Polylang、WooCommerce、Elementor 有官方适配 | 支持 WooCommerce 与主流主题 |
技术上 Complianz 的杀手锏是「服务/第三方自动识别」:它内置了一个已知第三方服务清单(integrations 目录),当检测到你的站点嵌入了 YouTube iframe 或使用了 GA4 代码时,会自动把 URL 改写成 youtube-nocookie.com 或加入占位符,直到用户同意才真正加载。这种”傻瓜式合规”对没有开发资源的团队价值极高。
CookieYes 的价值则在于轻量与直观:样式编辑器所见即所得,banner 配置十分钟搞定,且它的 cookie 扫描器做得相当细(能识别 cookie 的 lifetime、Domain、是否为 HTTP-only)。二者并非替代关系,很多站点先用 CookieYes 快速上线,业务涉及多国后再迁移到 Complianz。
另一个必须提的区别:Complianz 自带 ** consent statistics** 报表以及「证明文档(Proof of Consent)」,这在被审计时是硬通货;而只用提示条不做记录的站点,一旦被问”你怎么证明他同意了”,答案是无。
保姆级实操
步骤 1:安装前先确定目标区域
进入 Complianz 向导第一步就是问你目标受众。这决定了后面的规则与按钮布局:
- 只做欧盟/英国:选 EU,模式必须选 Opt-in(默认),且必须禁用 Implicit consent。
- 同时面向加州:启用 US 分支,此时 Complianz 会给美国访客显示 “Do Not Sell My Personal Information” 链接,并遵循 opt-out 逻辑。
- 只做中国大陆:两者都不是必需,但《个人信息保护法》要求”告知 + 单独同意”,实践中仍建议采用 opt-in 模式。
步骤 2:Complianz 关键配置项
「Complianz → Wizard」一共七步,容易踩坑的是这几项:
- Where are you located / Do you target visitors in…:多选,别嫌麻烦。
- Consent Type:Opt-in banner → 不要选 Statistics-only。
- Blocked content / Placeholders(「Integrations」标签):务必把 YouTube、Google Maps、Facebook Pixel 打开。这是它最强也最容易被忽略的功能。
- Statistics & Tools:勾选已使用的统计工具(Google Analytics / Tag Manager / Matomo),Complianz 会按工具生成对应的合法文案。
- Documents → Cookie Policy:生成后把短代码
[cmplz-cookie-policy]放进隐私政策页面。文档会随 template 更新而更新,这点是它的隐性优势。
步骤 3:验证 Complianz 的阻断是否真的生效
YouTube 嵌入是最容易验证的场景。正常的 <iframe src="https://www.youtube.com/embed/xxx"> 在未经同意时应该完全不加载:
# 同意之前,源码里不应出现 youtube.com/embed
curl -s https://example.com/demo-page/ | grep -c 'youtube.com/embed'
# 期望输出 0
如果想手动控制某个嵌入块(比如主题自己写的地图),用 Complianz 提供的占位短代码:
// 用 cmplz 占位符包裹自定义嵌入内容
echo cmplz_placeholder( 'google-maps' );
步骤 4:CookieYes 侧的关键配置
CookieYes 的路径是「CookieYes → Cookie Scanner」→「Consent Banner」:
- Scanner:改完脚本后必须重扫,不然新 cookie 不会进分类表。
- Banner → Preference center:把四个类别 ALL 打开(Necessary / Functional / Analytics / Advertisement),其中 Necessary 必须不可关闭。
- Compliance → Auto-hide / Auto-accept:不要开启 Auto-accept(scroll to accept),这个”滚动即同意”的做法在欧洲监管实践中已被多次判定无效。
- Consent Log:免费版也有,建议保留 6 个月。
步骤 5:两者共有的必须项——「不要在任何地方硬编码脚本」
无论选哪个,以下写法都会绕过阻断,必须避免:
// 错误示范:直接在 wp_head 里 echo GA 脚本,同意插件管不到
add_action( 'wp_head', function() {
echo '<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXX"></script>';
} );
正确做法是用 GTM4WP 插件或同意插件自带的 GTM 集成项来注入,让 script 的加载时机交给 CMP(Consent Management Platform)控制。
步骤 6:与 Google Consent Mode v2 对接
如果继续用 Google 系统计,欧盟地区现在要求接 Consent Mode v2。Complianz / CookieYes 都支持自动推送 gtag consent 状态。前端可验证:
// 在浏览器控制台检查 Google Consent Mode 状态(需已加载 consent API)
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
wait_for_update: 500
});
同意后应被更新为 granted。这段 default denied 的初始值必须在任何 GA/GTM 代码之前执行,否则 Consent Mode 无效——两个插件都处理了这个顺序,自己写的时候最容易搞反。
常见踩坑
- 区域判断失效:Complianz 依赖运行时查询访问者 IP 归属地的接口,如果服务器禁用了 outbound HTTP 会 fallback 到”对所有人都按 EU 处理”。这不是 bug,是保守策略,但会让非 EU 用户体验变差。
- 案例:某 B2B 外贸站上线 Complianz,但主题自带的 Hero 视频用了自托管
<video>+ 一段 Vimeo iframe。Vimeo 的 cookie 没有被自动识别(不在默认 integrations 清单里),结果站点虽然弹了合规 banner,Vimeo 却在用户一进页面就写 cookie。客户所属集团的 DPO(数据保护官)扫描后判定不合规,要求两周内下线该 embed。最终改用自托管 MP4 +<video preload="none">彻底解决。教训:自动识别清单有限,自己加的第三方嵌入要人工核对。 - 文档生成了但没插入页面:很多站点生成了 Cookie Policy 内容,却忘了把
[cmplz-cookie-policy]短代码放进实际页面,banner 上的链接点过去是 404。 - 两个合规插件共存:Complianz + CookieYes 同时启用会出现双 banner 且互相错位。迁移时务必先停用旧插件并清理残留 option。
- Consent Mode v2 顺序错误:
consent default denied必须早于 gtag.js 载入。用 Site Kit 注入 GA 时无法控制顺序,这是 Site Kit 在 EU 合规场景的最大缺陷。 - AMP / 缓存版页面失去阻断能力:AMP 有自己的一套
<amp-consent>组件,普通 CMP 插不进去,需要插件专门的 AMP 分支支持。 - 同意记录被缓存层污染:不要把 banner 的显示与否写进可被 Cache 的 HTML;真相再一次是”是否显示 banner 由浏览器端(localStorage 里已有的 consent 记录)决定”。
延伸阅读:Cookie 同意插件配置、Google Consent Mode 配置
总结
一句话口径:单区域、重视颜值与快速上线 → CookieYes;多区域业务、需要自动化阻断和法律文书 → Complianz。 无论选谁,落地后必做三项验证:无痕模式首次访问时 Network 面板无第三方请求;%s -> Reject 之后也不出现请求;%s -> 页面上能找到常驻的「Cookie 设置」入口。合规不是装完就结束的事,嵌入新服务(比如新加一个在线客服工具)后必须重跑扫描。
