绕过广告拦截器
尽管 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 这样的框架,可以使用它们的 rewrites 功能。
自己托管追踪脚本
如果你无法访问网络服务器,无法代理脚本,也可以直接将整个追踪脚本托管在你自己的域名下。
- 在浏览器中打开脚本 URL:
https://cloud.umami.is/script.js。 - 保存该文件。
- 将文件上传至你的域名。
- 设置
data-host-url属性,以便数据发送到正确的位置。详情见 追踪器配置
请注意,这种方法的可靠性不及代理,如果追踪脚本发生变化,你需要重新下载并更新脚本。
使用环境变量(自托管)
如果你是自托管的 Umami,可以使用环境变量来配置你的实例。
有两个可能被阻止的来源:
- 追踪脚本,位于
https://your-umami.com/script.js - 统计数据收集端点,位于
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。