内容提要
本文介绍使用Cloudflare Workers解决AdBlock导致Umami访问统计失效的方法,通过创建Worker并使用JavaScript代码,绕过AdBlock的屏蔽规则。提供了具体的代码示例和配置方法。
延伸解读
AdBlock 屏蔽机制与反代思路
文章指出 Umami 被 AdBlock 屏蔽的规则是 ||umami.is^$3p,导致脚本地址和数据上报地址均被拦截。通过 Cloudflare Workers 反向代理,将请求转发到 Umami 官方服务,使浏览器请求的域名不再是 umami.is,从而绕过屏蔽规则。这一思路同样适用于其他被 AdBlock 拦截的统计服务,但需注意反代域名本身也可能被加入屏蔽列表。
官方服务与自建服务的配置差异
使用 Umami 官方服务时,Worker 代码无需修改,直接部署即可。若使用第三方或自建服务,需将代码中的 UMAMI_HOST 改为实际服务地址。对于自建服务,文章还提到可通过 TRACKER_SCRIPT_NAME 和 COLLECT_API_ENDPOINT 环境变量自定义脚本地址和数据上报地址,这样无需反代也能规避屏蔽,为自建用户提供了另一种选择。
部署与注入时的关键检查点
创建 Worker 并配置域名后,应先测试脚本地址能否正常访问,例如文章中的 https://ums.miantiao.me/mt-demo.js,其中 mt-demo 可替换为任意伪装路径。注入网站时,需确保 src、data-host-url 和 data-website-id 三个属性正确,尤其站点 ID 不能写错,否则数据无法上报。这些步骤直接影响统计能否生效,部署后建议实际访问验证。
Q&A
Umami 统计为什么会被 AdBlock 屏蔽?
AdBlock 的屏蔽规则是 ||umami.is^$3p,它会同时屏蔽 Umami 的脚本地址和数据上报地址,导致访问统计失效。
如何用 Cloudflare Workers 绕过 AdBlock 对 Umami 的屏蔽?
在 Cloudflare Workers 创建一个 Worker,贴入提供的 JavaScript 代码,配置好域名后,将 Worker 地址作为 Umami 脚本地址注入网站即可。
使用官方 Umami 服务时,Worker 代码需要修改吗?
不需要修改代码,直接使用提供的代码即可(代码中 UMAMI_HOST 默认为官方地址)。
自建 Umami 服务如何避免反代?
自建服务可以通过设置 TRACKER_SCRIPT_NAME 和 COLLECT_API_ENDPOINT 环境变量来定义脚本地址和数据上报地址,无需使用 Worker 反代。
注入 Umami 脚本时需要注意哪些参数?
需要正确设置 src(脚本地址)、data-host-url(数据上报地址)和 data-website-id(站点 ID),站点 ID 不能写错,否则无法上报数据。
如何测试 Cloudflare Workers 反代 Umami 是否成功?
配置好 Worker 域名后,访问脚本地址(如 https://ums.miantiao.me/mt-demo.js),如果能正常访问并返回 JavaScript 内容,说明反代成功。