内容提要
文章介绍绕过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。
使用此方案时需要注意什么?
必须勾选“禁用自动设置”,否则数据无法统计。