Umami 在淘宝小程序 WebView 中无法统计埋点数据的问题

现象:在淘宝小程序的 WebView 中发送 Umami 埋点数据时,后端服务中并没有统计到这些数据。

通过排查整个发送路径,发现后端服务是收到了这些数据的(Nginx 中有对应的日志)。

最后借助 AI 才发现是因为 Umami 默认是开启机器人过滤的,而淘宝小程序的 WebView 的 UserAgent 中包含了 AliApp(TB/10.58.20),被 Umami 识别为机器人。

因为通过排查相同的请求(XHR),只修改 UserAgent 就可以正常收到数据。把请求成功和失败的 XHR 内容都丢给 AI 分析,它再分析源码,发现是因为 Umami 会根据 UserAgent 来判断是否是机器人。

"Mozilla/5.0 (Linux; U; Android 16; zh-CN; 23127PN0CC Build/BP2A.250605.031.A3) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UWS/5.18.17.0 Mobile Safari/537.36 AliApp(TB/10.58.20) UCBS/2.11.1.1 TTID/1161160000000@taobao_android_1.5.2 WindVane/8.5.0 Triver/1.2.0-SNAPSHOT"
  

这个 UserAgent 没法修改,于是只能把 Umami 的机器人过滤给关闭了。

服务是部署在 Kubernetes 上的,只需要在 Umami 服务的配置文件中添加一个环境变量 DISABLE_BOT_CHECK,值设置为 1 就可以了。