How to

绕过广告拦截器

尽管 Umami 是一款注重隐私的产品,它仍然可能被某些广告拦截器阻止。广告拦截器使用由许多不同人员维护的屏蔽列表。有些列表可能过于激进,例如阻止任何包含 analytics 一词的内容,或者仅仅因为其运作方式而直接屏蔽所有跟踪产品。

以下是几种避免广告拦截器的方法。

代理(Proxying)

代理是在服务器级别进行的,因此你需要访问你的网络服务器以进行更改。 通过这种方法,你可以代理追踪脚本本身,隐藏原始脚本的实际名称和位置。

例如,你可以在你的网站上拥有这样一个脚本:

https://your-website.com/script.js

它代理的实际文件是:

https://cloud.umami.is/script.js

因此,即使广告拦截器阻止了 cloud.umami.is 这个域名,你自己的域名仍然安全。

这里有一些教程可以参考:

要使用服务器端实现此功能,你可以创建一个单独的端点。 例如,在 Express.js 中:

app.get("/stats.js", async (req, res) => {
    const scriptText = await fetch("https://cloud.umami.is/script.js");
    res.send(await scriptText.text())
});

然后在你的 html 的 head 标签中:

<script defer src="/stats.js" data-website-id="..."></script>

如果你使用的是像 Next.js 这样的框架,可以使用它们的 重写 功能。

自行托管追踪脚本

如果你无法访问网络服务器,无法代理脚本,也可以直接将整个追踪脚本托管在你自己的域名下。

  1. 在浏览器中打开脚本 URL:https://cloud.umami.is/script.js

  2. 保存该文件。

  3. 将文件上传至你的域名。

  4. 设置 data-host-url 属性,以便数据发送到正确的位置。详情见 追踪器配置

  5. 在浏览器中打开脚本 URL,https://cloud.umami.is/script.js

  6. 保存该文件。

  7. 将文件上传到你的域名。

  8. 设置 data-host-url 属性,以便将数据发送到正确的位置。参见 追踪器配置

使用环境变量(自托管)

如果你是自托管的 Umami,可以使用环境变量来配置你的实例。

有两个可能被阻止的来源:

  1. 追踪脚本,位于 https://your-umami.com/script.js
  2. 统计数据收集端点,位于 https://your-umami.com/api/send

可以通过 TRACKER_SCRIPT_NAME 变量重命名你的追踪脚本,比如改成 x.js。然后你脚本的 src 改成 https://your-umami.com/x.js

可以通过 COLLECT_API_ENDPOINT 变量重命名你的端点,比如改成 /api/x。追踪脚本会自动调用你自定义的端点名称,而不是 /api/send