先说我们不做什么
统计脚本不会绕过浏览器的拦截,也不会无视访客的「请勿跟踪」设置。被拦截的访问就是看不到,我们不会用指纹或换域名之类的办法强行采集。这也是为什么报表数字通常会比服务器日志少一些。
设了内容安全策略(CSP)时
如果你的网站响应头里有 Content-Security-Policy,需要放行下面两个域名,否则脚本加载不了或者数据发不出去,而且页面上不会有任何报错:
script-src https://static.pathclue.com
connect-src https://api.pathclue.com
script-src管脚本能不能加载。全埋点、错误监控、身份识别这些扩展脚本也从同一个域名按需加载,所以只放行主文件client.js的完整地址是不够的,要放行整个域名。connect-src管数据能不能发出去。没放行时,浏览器会静默拦掉上报请求。
如果同一个项目还开了在线客服组件,客服组件用的域名需要另外放行,控制台的客服安装页会列出来。只用统计的话,上面两行就够了。
怎么确认是 CSP 的问题
打开浏览器开发者工具的「控制台」面板,刷新页面。CSP 拦截时浏览器会打印一条带 Content Security Policy 字样的警告,里面写着被拦的地址和是哪条指令拦的。
广告拦截插件
部分广告拦截规则会拦截统计类脚本。被拦时,网络面板里看不到 client.js 的请求,或者看不到发往 api.pathclue.com 的上报,实时页里也不会出现这次访问。
拦截率因受众差异很大:面向开发者和技术人群的网站,桌面端访问里被拦的比例明显高于面向普通消费者的网站,手机端通常低很多。我们没有办法替你精确估算这个比例。如果你需要和订单系统对账,建议把下单、付款这些关键事实改用 服务端事件接口 上报,它不经过浏览器,不受拦截影响。
自己托管脚本
有的团队会把 client.js 放到自己的域名下,再用 data-api 指定采集地址。这样做之后,CSP 按你自己的域名写即可。要说明的是,这并不能保证拦截插件放行,只是请求不再指向另一个主机名。脚本版本更新也需要你自己同步,所以一般不建议这样做。
请勿跟踪和全局隐私控制
访客的浏览器开了「请勿跟踪」(DNT)或「全局隐私控制」(GPC)时,脚本默认完全不运行。这类访客不会出现在任何报表里。这是我们默认的立场,脚本上虽然有一个属性可以改,但不建议改,见 请勿跟踪与访客退出。