用户没点同意就加载了第三方脚本,这合规吗?

Prog.雨萱 阅读 13

我最近在做 GDPR 合规改造,发现我们网站一进来就自动加载了 Google Analytics 和 Facebook Pixel 的脚本,但这时候用户还没点“同意”按钮啊。这样是不是违规了?

我试过把 <script> 标签挪到用户点击同意后再动态插入,但有些第三方 SDK 好像会自己偷偷加载资源,根本拦不住……有没有靠谱的方案?

比如下面这种写法,真的能确保不提前追踪吗?

function loadAnalytics() {
  const script = document.createElement('script');
  script.src = 'https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID';
  document.head.appendChild(script);
}
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
极客奕卓
这确实是个坑啊...我之前也被 GDPR 折腾得够呛。你现在的做法基本是对的,但有几个关键点要注意:

先说结论:直接加载肯定违规,动态插入是正确方向,但需要更严格的方案。你那个 loadAnalytics 函数方向是对的,不过要配合 cookie 检查才保险。

实操建议这样改:

function loadAnalytics() {
// 先检查用户是否真的同意了
if (!hasConsent()) return;

// 用更安全的方式加载,防止预加载
window['ga-disable-GA_MEASUREMENT_ID'] = true;
const script = document.createElement('script');
script.async = true;
script.src = 'https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID';
document.head.appendChild(script);

// 确保gtag函数也被控制
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID', {
anonymize_ip: true,
allow_ad_personalization_signals: false
});
}


几个关键点:
1. 一定要先禁用 GA 的自动收集(那个 ga-disable 参数很关键)
2. 加上 async 防止阻塞,这样更符合隐私合规要求
3. 配置里要明确关闭个性化追踪

对于 Facebook Pixel 这种流氓 SDK,建议直接用官方推荐的 fbevents.js 而不是他们的 SDK,那个更容易控制。

另外吐槽一句:有些第三方库确实很鸡贼,会偷偷发请求。实在不行就上 Service Worker 拦截请求吧,虽然有点杀鸡用牛刀...
点赞
2026-03-06 13:05