-
Notifications
You must be signed in to change notification settings - Fork 2
Description
某日,我在流量统计系统的 “浏览器分析” 页面中发现一条奇怪的记录 “Version 10
”。这是什么浏览器?版本号达到两位数的浏览器也只有 Opera 了,所以最大 “嫌疑” 应该是 Opera 10。网上搜索的结果也证实了我的猜想。
Opera 10 用户代理字符串的变迁
之前我明明看到过 “Opera 10
” 的记录啊,怎么现在显示为 “Version 10
” 了?
原来 Opera 10 的用户代理字符串有变化。在 2008 年底发布的 Alpha 版中,Opera 10 的用户代理信息中规中矩:
Opera/10.00 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.0
但是在后续发布的 Beta 测试版(以及即将发布的正式版)中,Opera 10 将使用类似下面这种有点奇怪的用户代理信息:
Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00
大跌眼镜是吧?华丽丽的 10.0 变成了 9.8?!
为何要做如此奇怪的修改
Opera 的工程师在测试中发现,Opera 10 Alpha 在很多老网站上的运作很不正常。原来,有很多网站使用了 “浏览器嗅探” 技术,也就是说网站会针对不同的浏览器提供不同的内容或功能。然而不幸的是,这些网站无法识别两位数的浏览器版本号,于是 Opera 就成了首当其冲的受害者——它们把 Opera 10.0 误认为是 Opera 1.0,并因此向 Opera 10 提供不完整的功能,甚至有些网站干脆拒绝 Opera 10 的访问。
这当然是 Opera 不愿意看到的。于是,Opera 的工程师们决定,将用户代理信息中的版本号定格在 9.8,并另外启用 Version
字段来标识真正的版本号。当然他们也考虑过选用 9.99 这个最接近 10 的可用作版本号的数字,不过出于预留空间的考虑,最终还是决定采用 9.8 作为象征性的版本号——它正好介于(Opera 9 的最后一个版本号)9.6 与 10 之间。
怎么会收集到 Version 10
这条记录
为什么我的流量统计系统会收集到 Version 10
这条记录,而不是 Opera 9
?
我使用的流量统计系统是自己修改的 “阿江统计 1.3”,我着重对浏览器统计功能进行了一些优化。在对访问数据的分析过程中,我发现 Safari 早已开始在用户代理字符串中使用 Version
字段来标识版本号了(令人意外的是,Safari
字段标识的是 WebKit 内核的版本号),所以我的流量统计系统会对该字段进行分析和记录。同时,考虑到可能会有其它浏览器也使用 Version
字段,我只对在 Safari 的用户代理字符串中出现的 “Version
” 进行替换处理。所以这个与 Safari 无关的 Version 10
就直接暴露出来了。
发现这个问题后,我也迅速调整了流量统计系统,实现了对 Opera 10 的准确判断。和我一样热衷于流量分析的朋友也赶快跟进吧!