如何使 Google 分析响应 "Do Not Track"

How to make Google Analytics respond to "Do Not Track"

我打算在我的网站上放置 google 分析跟踪代码,但我不知道如何让它响应那些发送 "Do not track" 信号的人。 如何让 GA 跟踪代码跟踪那些没有 DNT 信号的人,同时保护那些有 DNT 信号的人?

我不知道在 GA 的配置中是否有对 DNT 的任何特殊支持,但无论如何它都是学术性的,因为加载 GA 脚本的简单行为传输了 google 跟踪所需的所有内容 - IP 、浏览器指纹、引荐来源网址、cookies — 并且 google 不能真正相信当这些信息像这样落入他们的膝上时不会使用这些信息。

解决此问题的唯一方法是先发制人地自行过滤 - 如果在浏览器中设置了 DNT,甚至不要加载 GA 脚本。

请记住,欧洲过去几个月的案例(搜索 "Planet49")重申不考虑分析 cookie(尤其是第三方的)"necessary",并且作为在加载脚本或让它设置任何 cookie 之前,需要同意。

避免所有这些大惊小怪的方法当然是自行托管您自己的分析(例如使用 Matomo 或类似工具)并且不要像 GA 那样不必要地使用 cookie。

我只是想插话一下,您在这项工作中使用了错误的工具。如果您想要一个尊重 DNT 的分析平台,那么您将需要使用 Google Analytics 以外的东西。没有太多对隐私友好的分析——这实际上是导致我们创建 Insights 的原因。以下工具以隐私为中心,据我所知,尊重 DNT 请求:

  • Insights:跟踪事件、页面浏览量等。尊重 DNT 请求。

  • SimpleAnalytics:跟踪页面浏览量。尊重 DNT 请求。

  • Matomo:可能是最完整的隐私友好型分析工具。它可以配置为尊重 DNT 请求。自托管。

您无法在您的 GA 仪表板中响应此请求,但是,您可以按条件激活分析脚本:

<script>

    let dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;

    if (dnt != "1" && dnt != "yes") {

        // past analytics scripts here

    } else {
       console.debug("Request to cancel loading analytics scripts (Do-Not-Track).");
    }
</script>

查看更多:Navigator.doNotTrack and Tracking Preference Expression.

Google Analytics 现在支持 user opt-out.

的方法

这可以用来实现:

  • 遵守浏览器的 DoNotTrack
  • Cookie 同意横幅

使用以下 google 分析标签遵循 DNT 浏览器设置(将 XX-XXXXXX-X 替换为您的跟踪 ID)。

使用此解决方案,当 dnt 处于活动状态时,不会向 google 传输任何数据。当使用用户选择退出的“google 方式”时,您的页面中仍然包含一个 google 脚本,他们仍然知道您在这个页面上(即使他们声称不跟踪你)。

<script>
    <!-- Global site tag (gtag.js) - Google Analytics respecting DNT -->
    if ([true, 1, '1', 'on', 'yes'].indexOf(navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack) === -1) {
        let gtagId='XX-XXXXXX-X', sc=document.createElement('script');
        sc.async=true;
        sc.src='https://www.googletagmanager.com/gtag/js?id=' + gtagId;
        document.head.appendChild(sc);
        
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
        gtag('config', gtagId);
    }
</script>