为什么所有浏览器的用户代理都以“ Mozilla /”开头?


210

所有流行浏览器的用户代理字符串,甚至Internet Explorer都以开头Mozilla/。为什么会这样呢?


2
用户代理已被用来告诉Web服务器“ 我不是随便的人;我不是随便的人。我支持这些功能。请不要歧视我。” 因此,浏览器的用户代理中包含所有其他浏览器。
КонстантинВан

Answers:


285

这是一个漫长而悲伤的故事

综上所述:

  1. Mozilla浏览器通过User-Agent发布Mozilla/1.0 (Win3.1)。它已公开重命名为Netscape,但在其User-Agent中保留其原始名称。
  2. Internet Explorer已发布。它通过启动其User-Agent来欺骗Netscape,Mozilla/因为Web服务器通常是浏览器嗅探并为带有框架的页面提供服务-Netscape和IE均支持此功能,但该时代的其他浏览器均不支持-仅针对Netscape。
  3. 随着时间的流逝,Gecko,Konqueror,Opera,Safari和Chrome各自决定以类似的方式欺骗​​某些以前的浏览器的User-Agent,以操纵嗅探浏览器的网页正确理解其浏览器的功能。作为这种欺骗的一部分,所有浏览Mozilla/器都以来启动User-Agent ,就像浏览器之前一样。还会产生大量其他废话,例如现代Chrome的User-Agent同时声称自己是Mozilla,Chrome,Safari和“ like Gecko”。

18
请注意,此处的“ Mozilla” 不是该名称的当前开源项目,而是Netscape的原始代号,被认为是“ Mosaic Killer”。代号已在很多年后重新用于开源项目,其渲染引擎是此处提到的“ Gecko”。
IMSoP 2014年

75
而到了2015年,我们仍然会保持愚蠢。MS Edge的用户代理字符串为Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.1
filoxo

18
难怪很难进行浏览器检测,因为它们全都假装彼此!
Sarsaparilla

3
浏览器之战并非没有伤亡。
Pikamander2,19年

11
如果userAgentString太乱了,那么为什么不推荐和/或删除它呢?
梅尔文·亚伯拉罕


10

正如@Jason所说的“这是一个漫长的故事”。总结这个故事“它只是每个浏览器都假装是Mozilla”

在尝试了所有内容之后,我终于使用了:http : //www.useragentstring.com/

您可以使用上述网站获取格式化的用户代理和操作系统。
他们有一个API,您可以直接使用...


1
纠错:包括Mozilla在内的每个浏览器都伪装成Netscape,其用户代理始于Mozilla。重复使用代号的事实加剧了混乱。
IMSoP 2014年

Mozilla和Firefox代码库最初是Netscape的一部分。这就是为什么许多Firefox内部API均以“ ns”作为前缀的原因。
Lie Ryan

2

因为这就是Netscape标识自己的方式,因此Microsoft希望与能够检测Netscape并拒绝其他任何东西的网站合作。


1

原因是臭名昭著的浏览器大战

简而言之-浏览器开始假装为其他浏览器,因为某些网站根据请求该浏览器的内容来提供内容,并且他们还希望内容适用于其他浏览器。

我感到惊讶的是,至今仍未解决。既然由于userAgent遗留原因无法安全删除,为什么没有引入一些明确标识浏览器的新功能?是的,大多数时候您不需要浏览器检测,而需要功能检测,但是它也不是内置JS!


0

Mozilla / 5.0是表示该浏览器与Mozilla兼容的通用标记,并且对于当今几乎所有浏览器都是通用的。 有关更多详细信息,请单击此处


2
这有点误导-请注意,实际上所指的“ Mozilla”是Mozilla(马赛克杀手)浏览器,该浏览器在发行前已更名为Netscape(大多数读者可能从未听说过其原始名称)- 并非 Mozilla仍是今天的非营利性免费软件社区。
Mark Amery
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.