$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
if ( preg_match( '/bot|spider|crawl|python-requests/i', $ua ) ) { exit; }
后台统计本月下载 12000 次,实际独立用户只有 4500,日志里大量请求 UA 是 python-requests 和 Bytespider,频率稳定在每秒两次。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:计数逻辑只按请求次数累加,没有过滤 UA 和 IP。爬虫抓 sitemap 时顺带把下载地址全请求了一遍。
「下载统计爬虫」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
处理上按这个顺序:计数前过滤常见爬虫 UA 和空 UA,命中直接跳过;同一 IP 十分钟内只计一次;对比过滤前后的统计数字,与真实用户数误差控制在百分之十内。
确认没问题再收工,统计数字回落到 4800 左右,与后台独立用户数接近。
