可通过Apache日志User-Agent字段直接统计浏览器占比与版本分布,需用成熟解析库归一化识别(如user-agents)、按Edg/→Firefox/→Chrome/→Safari/顺序匹配并截取主版本,再用GoAccess生成含设备区分的可视化报告。

直接通过 Apache 日志中的 User-Agent 字段就能统计不同浏览器的访问占比与版本分布,不需要额外埋点或前端上报。关键在于准确解析 User-Agent 字符串,并做归一化处理——因为同一浏览器在不同系统、更新版本下 UA 差异很大。
提取并归一化浏览器标识
User-Agent 是一段包含浏览器名、版本、操作系统等信息的字符串,例如:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36这类字符串不能靠简单关键词匹配(比如只找“Chrome”),否则会漏掉带 Chromium 内核的 Edge、QQ 浏览器等,也会把旧版 Chrome 和新版混淆。推荐做法是:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 使用成熟的 UA 解析库(如 Python 的
user-agents或 Node.js 的ua-parser-js),它们内置了主流浏览器的识别规则和版本提取逻辑 - 若用命令行+awk/grep 快速估算,至少按以下顺序匹配:先匹配
Edg/(Edge)、再Firefox/、再Chrome/、再Safari/(但排除含Chrome的 Safari,避免误判) - 对版本号统一截取主版本(如
Chrome/127.0.0.0→Chrome 127),忽略次版本和构建号,便于聚合
用 GoAccess 快速生成可视化报告
GoAccess 原生支持 Apache 日志格式(Common Log Format 或 Combined),且能自动解析常见浏览器 UA 并分类统计。启动时加参数即可聚焦浏览器维度:
-
goaccess access.log -f access.log --log-format=COMBINED --agent-list:开启浏览器详情页,显示各浏览器及其版本的请求数、占比、独立访客数 - 输出 HTML 报告后,在 “User Agents” 标签页下可直接查看排序列表,点击任一 UA 可展开其完整字符串样本
- 支持导出 CSV,方便进一步用 Excel 做版本分布直方图(例如:Chrome 125 占 18%、126 占 22%、127 占 35%)
注意移动端与桌面端的区分逻辑
单纯看浏览器名会把 iOS Safari 和 Android Chrome 混在一起统计,但二者用户行为、渲染兼容性差异大。应在归类时加入设备上下文:
- UA 中含
iPad、iPhone、→ 归为 iOS 设备下的 Safari 或 Chrome(iOS 上 Chrome 实际用 WebKit 内核)</li> <li>含 <code>Android
且含Chrome/→ Android Chrome;含Firefox/→ Android Firefox - 不含移动标识但含
、<code mac>、<pre class="brush:php;toolbar:false;"> → 视为桌面端</li> <li>这样拆分后,可分别统计“桌面 Chrome 占比”、“iOS Safari 占比”、“Android Chrome 占比”,更贴合实际优化场景</li> </ul> <H3>规避常见误统计陷阱</H3> <p>真实日志里有不少干扰项,不清洗会导致结果失真:</p> <ul> <li>爬虫 UA(如 Baiduspider、Googlebot)默认也带浏览器标识(如 Mozilla/5.0),需在分析前过滤掉,除非你专门研究 SEO 爬虫的浏览器模拟策略</li> <li>空 UA 或极简 UA(如 <code>-</pre> 或 <code>–)代表客户端未发送 UA,应单独归为“未知”,不计入浏览器占比分母 - 部分国产浏览器(如 360、UC)UA 会伪装成 Chrome,仅靠字符串匹配易高估 Chrome 份额;用专业解析库可识别内核真实类型
- 日志中若有大量 404 或 301 请求,其 UA 往往和正常浏览不一致(如监控工具、扫描器),建议限定状态码为 200 才参与浏览器统计

















