每次点分享,统计接口都返回 net::ERR_BLOCKED_BY_CLIENT,控制台一片红,后台分享量比实际少了 40%。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,接口路径叫 /share/count,带 count 和 track 字样,被 uBlock 的通用规则命中,请求根本没发出去。前端只 catch 了网络错误,没有本地补发队列。

「分享计数请求被拦截」这类改动最怕改一半,回滚脚本先准备好,再动生产。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

navigator.sendBeacon('/api/v1/stat', new Blob([JSON.stringify({e: 'share'})], {type: 'application/json'}));
// 失败时落本地队列,下次进页面补发

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

具体做法是,把统计接口换到不含 count track 字样的路径;失败时写入 localStorage 队列 下次进页面补发;关键指标改走 sendBeacon 减少被拦概率。

最后用这个标准收尾,开着广告拦截插件点分享,控制台不再出现 ERR_BLOCKED_BY_CLIENT,后台计数与实际点击差在 5% 以内。

作者 9823189