解决 Cloudflare Web Analytics 被 AdBlock 屏蔽问题

解决 Cloudflare Web Analytics 被 AdBlock 屏蔽问题

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

文章介绍绕过AdBlock屏蔽Cloudflare Web Analytics的方法:因脚本域名被屏蔽,作者用Cloudflare Workers代理脚本并转发数据,伪装地址规避拦截。文中给出Worker代码和网页注入示例,并提醒需禁用自动设置,否则无法统计。

🔎

延伸解读

为何 AdBlock 能屏蔽 Cloudflare Web Analytics

AdBlock 通过规则 ||cloudflareinsights.com^ 直接屏蔽了 Cloudflare Web Analytics 的脚本域名 static.cloudflareinsights.com 和数据上报域名 cloudflareinsights.com。因此,只要浏览器安装了 AdBlock,统计脚本就无法加载,数据也无法发送,导致网站分析数据缺失。

代理方案的核心思路

文章提出的方案是利用 Cloudflare Workers 代理脚本和数据上报。Worker 将原本被屏蔽的脚本地址代理到自定义域名(如 cwa.miantiao.me),并将数据转发到 Cloudflare 的上报接口。这样,AdBlock 规则无法匹配自定义域名,从而绕过屏蔽。

部署时的关键配置

部署时需要创建一个 Worker,并配置自定义域名。在网页中注入脚本时,需将 src 和 data-cf-beacon 中的 send.to 都替换为自定义的伪装地址,并填入自己的站点 Token。此外,必须勾选“禁用自动设置”,否则数据无法统计。

方案的适用性与限制

该方案适用于使用 Cloudflare Web Analytics 且受 AdBlock 影响的网站。但需注意,它依赖于 Cloudflare Workers 服务,且需要自行维护代理域名。如果 AdBlock 更新规则屏蔽自定义域名,则可能失效。

❓

Q&A

Cloudflare Web Analytics 为什么会被 AdBlock 屏蔽?

因为 AdBlock 的过滤规则 ||cloudflareinsights.com^ 屏蔽了 Cloudflare Web Analytics 的脚本域名,导致脚本无法加载。

如何绕过 AdBlock 对 Cloudflare Web Analytics 的屏蔽?

使用 Cloudflare Workers 代理脚本地址,并将数据转发到真实的上报地址,同时伪装脚本路径来规避拦截。

Cloudflare Web Analytics 的脚本地址和数据上报地址分别是什么?

脚本地址是 https://static.cloudflareinsights.com/beacon.min.js,数据上报地址是 https://cloudflareinsights.com/cdn-cgi/rum。

Worker 代码中如何处理脚本请求和数据上报请求?

对于以 .js 结尾的请求,Worker 会从缓存或源站获取脚本并缓存;对于其他请求,Worker 会删除 cookie 头,将请求转发到数据上报地址,并添加必要的 CORS 头。

如何将代理后的脚本注入到网站中?

在网站 HTML 中添加 script 标签,src 指向 Worker 域名下的伪装脚本地址,并在 data-cf-beacon 属性中设置 send.to 为 Worker 域名下的伪装上报地址,同时替换 token 为你的站点 Token。

使用此方案时需要注意什么?

必须勾选“禁用自动设置”,否则数据无法统计。

🏷️

标签

➡️

继续阅读