“Mozilla/5.0”和“like Gecko”:Web 应用程序是否仍测试特定于 Firefox 的用户代理字符串?

“Mozilla/5.0”和“like Gecko”:Web 应用程序是否仍测试特定于 Firefox 的用户代理字符串?

如果这不是一个合适的提问网站,请原谅我;一些类似的问题已关闭Web 应用程序 Stack Exchange,所以我在这里问了这个问题。如果有必要,请随意迁移这个问题。


Mozilla/5.0许多当前的浏览器使用包含或Gecko(如)的用户代理字符串来标识自己like Gecko,这只对 Firefox(以及更高版本的 Netscape Navigator)有意义。

为什么仍在使用这个?假设 Chrome(撰写本文时的最新版本,运行于 Windows 8.1 64 位系统)将自己标识为

Chrome/32.0.1700.107 (Windows NT 6.3; WOW64) AppleWebKit/537.36

代替

Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36

某些网站会无法正常运行吗?是否仍有 Web 应用程序依赖用户代理字符串中的这些子字符串?

作为参考,Windows 8.1 64 位上 Firefox 27 的用户代理字符串是:

Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0

答案1

我仍然认为有一些 Web 应用程序使用它,但我不认为有很多人将它用于任何事情。

我问的问题可能有点傻,但是你需要这些信息做什么?

答案2

好的,我在 Stack Overflow 上找到了答案:为什么 Chrome 和 IE 在发送给服务器的 User-Agent 中放入“Mozilla 5.0”?(感谢乔阿蒂斯

这基本上是为了与某些(非常)古老的网站兼容而保留的历史遗迹。事实证明,在过去,一些网站会拒绝向用户代理字符串不包含“Mozilla”等子字符串的浏览器(包括当时的 Internet Explorer)提供某些类型的内容(例如内联框架)。微软通过冒充 Mozilla 解决了这个问题:

Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)

其他人最终都效仿了这种做法,并沿用了这一惯例。尽管如今根据声明的用户代理字符串提供不同的内容被认为是不好的做法,但一些网站仍然依赖用户代理嗅探来选择性地提供内容。(哎呀,我的个人网站会进行一些 UA 嗅探来阻止已知的垃圾邮件机器人!)

相关内容