本文转自:https://blog.csdn.net/S_gy_Zetrov/article/details/79463093 感谢sgyzetrov翻译

如果熟悉元素审查的童鞋,很多都会发现request headers中的user-agent基本都是以‘Mozilla’开头的

如我把博客编辑器元素审查一下,发现:

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6

那么,这到底是怎么回事呢?是与火狐有什么关系么?原来,最早流行的浏览器是 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,就发送框架,如果不是就不发送,俗称“看人下菜碟“。

而后M$(微软)开发了 IE,微软希望它成为 Netscape Killer,IE 也支持框架,但由于它不是 Mozilla,所以网站没有向它发送框架。微软十分不爽,也并没有耐心等待网站修改用户代理嗅探(User Agent sniffing)去支持IE,而是声称它兼容于 Mozilla,因此IE冒充 Netscape 称自己为:

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

骗过了网站得以收到网站发送的框架。由于IE根植于遍地都是的Windows系统,于是第一次浏览器战争以 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,因此用户代理嗅探(User Agent sniffing)又出现了,网站在检测到 Gecko 后会提供更好的页面代码。Linux 上的浏览器 Konqueror 使用的渲染引擎是 KHTM,它只能冒充Gecko 称自己为:

Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

Opera 则提供了选项,让用户想冒充哪个浏览器就冒充哪个浏览器。Apple 后来创建了 KHTML 的一个分支 WebKit,称自己为:

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

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

最新文章

  1. AMAB interconnector PL301(二)
  2. Silverlight DataGrid数据行背景颜色控制
  3. Java [Leetcode 118]Pascal's Triangle
  4. javascrip中array使用
  5. 关于php-fpm通讯时没有REQUEST_METHOD的问题
  6. js轮盘抽奖
  7. 如何做程序猿SOHO它定购家庭赚外快?
  8. zTree理解和简单Demo(转)
  9. [LeetCode] N皇后问题
  10. bzoj 3509: [CodeChef] COUNTARI] [分块 生成函数]
  11. 10.socket网络编程
  12. 教你如何前后端完全分离(非api、ajax)
  13. Java并发编程之并发工具类
  14. 【cogs 775】山海经 ——Segment Tree
  15. 数据库MySQL5.7.21win64位安装配置
  16. C# vs2015单元测试测试资源管理器不显示测试方法
  17. 使用 NumPy 和 Matplotlib 绘制函数图
  18. Mac 无需网线创建ipv6环境
  19. kafka清理
  20. page、request、session和application有什么区别?

热门文章

  1. 学习.NET 挑战赛
  2. TODO_LIST
  3. centos6.5开机执行命令
  4. margin的讲究
  5. MySQL全面瓦解10:分组查询和聚合函数
  6. currentColor在CSS的含义
  7. offsetWidth与offsetHeight
  8. Fastdfs集群部署以及基本操作
  9. GDT,LDT,GDTR,LDTR (转 侵删)
  10. WSL2:我在原生的Win10玩转Linux系统