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

sas*_*eve 195 user-agent

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

Jas*_*ton 261

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

综上所述:

  1. 使用User-Agent发布Mozilla浏览器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/,就像之前的浏览器一样.还有很多其他废话,例如现代Chrome的用户代理同时声称是Mozilla,Chrome,Safari和"像Gecko".

  • 在这里,我们在2015年,仍然使愚蠢永久化.MS Edge的用户代理字符串是`Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/42.0.2311.135 Safari/537.36 Edge/12.1`. (69认同)
  • 难怪很难进行浏览器检测,因为它们全都假装彼此! (13认同)
  • 请注意,这里的"Mozilla"不是**当前这个名称的开源项目,而是Netscape的原始代号,被认为是指"Mosaic Killer".多年后,代号被重用于开源项目,其渲染引擎是这里提到的"Gecko". (12认同)
  • 如果`userAgent`字符串很乱,那么为什么不推荐和/或删除它呢? (7认同)
  • @MelvinAbraham 它仍然有用,因为并非所有请求都来自浏览器。例如,您可能需要查看浏览器与服务器 (API) 流量 (4认同)
  • 浏览器之战并非没有伤亡。 (3认同)
  • 链接文章的加分,非常搞笑。“有很多的欣喜” (3认同)
  • 不,“框架”指的是框架集。使用 HTML 和胶带制作 UI 的一种现已弃用的方法。https://developer.mozilla.org/en-US/docs/Web/HTML/Element/frameset (3认同)

Mik*_* Mu 28

我认为它与以下内容有关:http://en.wikipedia.org/wiki/User_agent#User_agent_spoofing

早在早期,Netscape(代号为Mozilla)就是IE的主要竞争对手,他们希望防止被拒绝Netscape以外的浏览器的网站拒绝.


lot*_*lot 10

造成这种情况的原因是臭名昭著的浏览器战争

简而言之 - 浏览器开始假装是其他浏览器,因为一些网站根据浏览器的要求提供内容,并且他们也想要适用于其他浏览器的内容。

令我惊讶的是,这个问题至今仍未得到解决。既然由于userAgent遗留原因无法安全删除,为什么没有引入一些可以清楚识别浏览器的新功能呢?是的,大多数时候你不需要浏览器检测,而是需要功能检测,但它也不是内置的 JS!


Abh*_*oel 8

正如@Jason所提到的"这是一个漫长的故事".总结这个故事"它只是每个浏览器都假装成Mozilla"

尝试了一切后,我终于使用了:http://www.useragentstring.com/

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

  • 不过,Mozilla 和 Firefox 代码库最初是 Netscape 的一部分。这就是为什么许多 Firefox 内部 API 都以“ns”作为前缀。 (3认同)
  • 迂腐更正:包括 Mozilla 在内的所有浏览器都伪装成 Netscape,其用户代理始于 Mozilla。代号被重用的事实只会增加混乱。 (2认同)