日志里 Chrome 的 UA 变成 Chrome/110.0.0.0 Safari/537.36,自建的爬虫判断脚本把版本号 0.0.0.0 当成异常特征,三成真实访问被标成 bot。日志里能对上时间点,这种反而好排。
浏览器的 UA 缩减策略把次版本号统一抹成 0.0.0.0,不少老规则仍按完整版本号匹配,看到全零就归到未知客户端或爬虫。规则写得越细,越容易误伤新版本。这一点先确认清楚,后面就不用反复试。
const ua = navigator.userAgentData;
const brand = ua?.brands?.find(b => !b.brand.includes('Not'))?.brand;
// 服务端按已知 bot 名单匹配,未命中不直接判爬虫
「UA 版本号 0.0.0.0」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
处理上按这个顺序:改用 User-Agent Client Hints 读品牌和主版本,别解析完整版本串;爬虫判断以已知 bot 名单为主,未知 UA 先放行再观察;定期拿真实流量抽样跑一遍规则,统计误判比例。
结果对不对很好判断,同一条 UA 不再被标成爬虫,真实访问量回到正常水平,误判列表里没有常见浏览器。
