前阵子把博客挂上了阿里云 ESA,顺手用 kuma 每分钟 ping 一次首页当心跳。今天翻监控数据,发现首页响应体积老在两个值之间跳,一会儿 21K 一会儿 28K。好奇心上来了,抓两份下来解压一比——好家伙,大的那份多了行我从没写过的东西:<script src="https://xxxxx.myalicdn.com/rum_common.js"></script>,端端正正插在 head 里。
第一反应当然是被黑了。但源站文件是干净的,git 全历史里搜不到这串,HTTPS 链路上的中间人也塞不进来,排除法做到头,答案只剩一个:阿里自己干的。去控制台翻了个底朝天也没找到叫 RUM 的东西,最后在 API 文档里才逮到真身——这功能在控制台里叫「速度监测」,底下有个「自适应性能优化」的开关,API 名字更朴实,就叫「数据质量采集」。官方描述写得人畜无害:“抽样采集客户端的网络性能数据,用于业务异常分析和长期质量提升”。翻译一下:往你给访客的页面里注入自家采集脚本,数据回传 ESA 数据中心——回传给谁呢?阿里的数据中心,站长这边连个看板都没有,属于纯给阿里打工。更妙的是它默认就是开的,官方文档说只往 4xx/5xx 错误页里塞,实测我这 200 的正常首页照样中招,真实访客也有相当概率拿到被塞过的版本。
已经到控制台把它关了,再强刷几份新缓存验证,注入消失,响应回到和源站一字不差的干净状态,顺带还瘦了 7K。所以用阿里云 ESA 的朋友,现在就可以去「速度和网络 → 速度监测」看一眼这个开关;想知道自己中没中招也简单,curl 一份首页(随机注入,可能要多取几份样本)grep 一下 myalicdn 就知道了。