转自:Solidot,英文:Aaron Andersen

https://www.solidot.org/story?sid=55694

为什么浏览器的用户代理字符串(user-agent string)以 Mozilla 开头?

最早流行的浏览器是 NCSA Mosaic,它称自己为 NCSA_Mosaic/2.0 (Windows 3.1);

后来一个新浏览器出现了,它的名字叫 Mozilla,是 Mosaic Killer 的缩写。

Mosaic 并不觉得这好笑,因此它改名为 Netscape,它称自己为 Mozilla/1.0 (Win3.1)。

Netscape 支持框架(frame),而 Mosaic 不支持,因此用户代理嗅探(User Agent sniffing)出现了,网站在检测到 Mozilla 后就发送框架,如果不是就不发送。

后来微软开发了 IE,希望它成为 Netscape Killer,IE 也支持框架,但由于它不是 Mozilla,网站没有向它发送框架。

微软没有耐心等待网站修改,而是声称它兼容于 Mozilla,因此冒充 Netscape 称自己为 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。

第一次浏览器战争以 Netscape 的失利结束,但 Netscape 以 Mozilla 的名字获得了新生。

Mozilla 构建了 Gecko,称自己为 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826。Gecko 是一个渲染引擎,Mozilla 在此基础上开发了 Firefox,它称自己为 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0。

因为 Gecko 好于 IE,因此用户代理嗅探又出现了,网站在检测到 Gecko 后会提供更好的页面代码。

Linux 上的浏览器 Konqueror 使用的渲染引擎是 KHTM,它只能冒充 Gecko 称自己为 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。

Opera 则提供了选项,让用户想冒充哪个浏览器就冒充哪个浏览器。

苹果后来创建了 KHTML 的一个分支 WebKit,称自己为 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。

这就是为什么浏览器的用户代理字符串以 Mozilla 开头。

为什么浏览器的用户代理字符串以 Mozilla 开头?相关推荐

  1. 为什么浏览器的user-agent字符串以'Mozilla'开头呢?

    这是一篇技术文章的翻译+再创作,原文链接[link] 如果熟悉元素审查的童鞋,很多都会发现request headers中的user-agent基本都是以'Mozilla'开头的 如我把博客编辑器元素 ...

  2. 浏览器模式用户代理字符串(IE)

    问题 问题描述 今天在做项目的时候,QA部门提了一个Bug,在一个搜索列表中,搜索栏为空时刷新页面,却触发了搜索功能,并且列表显示出<未搜索到结果> 环境 IE11 问题原因 QA的IE1 ...

  3. Windows 系统IE各版本浏览器的用户代理字符串

    Windows 系统IE各版本浏览器的用户代理字符串 IE9:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0 ...

  4. 各浏览器的用户代理字符串整理

    每个浏览器都有它自己的用户代理(user agent)字符串,里面包含了浏览器和操作系统等信息.通过使用这个字符串,我们可以处理跨浏览器的差异.用户代理字符串保存在 JavaScript 的 navi ...

  5. 各浏览器User-Agent用户代理字符串整理

    一.基础知识篇: HttpHeader之User-Agent UserAgent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,UserAgent也简称UA.它是一个特殊字符串头,是一 ...

  6. 浏览器的用户代理(User-Agent)

    最近在学习网络爬虫的东西,使用Jsoup来解析html文档,在发出http请求的过程中需要配置用户代理这一属性,所以想具体了解一下.虽然已接触javaweb开发两年了,对http协议头也有一定的了解, ...

  7. 浏览器用户代理_什么是浏览器的用户代理?

    浏览器用户代理 Your browser sends its user agent to every website you connect to. We've written about chang ...

  8. 如何修改IE浏览器的User-Agent用户代理字符串信息

    每款浏览器都有一个专属的 User-Agent 字符串信息, 通过 User-Agent 网站可以检测用户所使用的浏览器版本.某些网站为了让用户获得更好的浏览体验,通过检测用户的浏览器版本,以确认用户 ...

  9. 用户代理字符串_用户代理字符串(或者,不要让我追随您)

    用户代理字符串 A very long time ago (read: ten years ago), we were in-between the so-called First and Secon ...

  10. 用户代理字符串检测技术【2】

    4. 识别Windows操作系统 在Windows平台下,还可以从用户代理字符串中进一步取得具体的操作系统信息.在Windows XP之前,Windows有两种版本,分别针对家庭用户和商业用户.针对家 ...

最新文章

  1. 在asp.net中解决cookies中文乱码问题
  2. STM32的晶振脚(OSCIN和OSCOUT)当成普通IO来使用
  3. 第七篇T语言实例开发,文本与程序的几种打开方法(版5.3)
  4. pwn学习总结(三) —— 栈溢出经典题型整理
  5. 【线性回归】面向新手的基础知识
  6. 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
  7. 超实用的脚本——检查oracle数据库是否存在潜伏的比特币勒索病毒
  8. linux jdk路径
  9. 阿里云商标注册服务及常见问题
  10. 2021-01-21
  11. 利用project编制进度计划
  12. 使用NATAPP内网穿透
  13. FFmpeg mxf扩展hdr、bt2020
  14. teraterm 执行sql命令_Tera Term怎么安装?Tera Term安装使用详细图文教程
  15. OSF Jonathan Bryce:Open Infrastructure开启开放协作新时代
  16. TCP扫描增强器实现65000端口,10S完成,快准狠(Go语言编程)
  17. bzoj1022 小约翰的游戏 anti-SG游戏
  18. 数据库---- 增删改查
  19. MySQL-mysql安装步骤
  20. android手机照片恢复,安卓手机照片怎么恢复?简单恢复方法分享

热门文章

  1. C# 使用Log4Net记录程序日志
  2. c#代码片段新建(sinppet)
  3. CSS的inherit与auto使用分析
  4. 推荐2款在线Ascii画图工具
  5. 将list中的数据组成用逗号分隔的字符串
  6. winfrom的DataGridView控件选中行的DataGridViewLinkColumn列字体颜色的改变
  7. 因为项目的原因,要学习J2EE了
  8. 关于二叉树,你该了解这些!
  9. 在 Mac上接收、暂停或停止接收通知操作方法
  10. mac详细的系统信息怎么查看?