浏览器 user-agent 字符串的故事

浏览器User-Agent解析与应用指南 User-Agent是HTTP协议中的重要字段,用于标识客户端浏览器和设备信息。其工作原理是通过字符串编码传递浏览器类型、版本、操作系统等元数据,帮助服务器进行内容协商和设备适配。在Web开发中,合理利用UA字符串可以实现响应式布局兜底、浏览器特性检测和爬虫识别等技术需求,但需注意避免过度依赖导致的兼容性问题。随着隐私保护加强,现代浏览器正通过User-Agent Reduction计划简化敏感信息,开发者应逐步迁移到Client Hints等新方案。典型应用场景包括金融风控系统识别自动化工具、混合开发中W 阅读详情

转:http://www.cnblogs.com/ifantastic/p/3481231.html

你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?

 

故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applications,简称NCSA)开发,并于1993年发布的一款浏览器。它自称“NCSA_Mosaic/2.0(Windows 3.1)”,Mosaic可以同时展示文字和图片,从此浏览器变得有趣多了。

 

然而很快就出现了另一个浏览器,这就是著名的Mozilla,中文名称摩斯拉。一说 Mozilla = Mosaic + Killer,意为Mosaic杀手,也有说法是 Mozilla = Mosaic & Godzilla,意为马赛克和哥斯拉,而Mozilla最初的吉祥物是只绿色大蜥蜴,后来更改为红色暴龙,跟哥斯拉长得一样。但Mosaic对此非常不高兴,于是后来Mozilla更名为Netscape,也就是网景。Netscape自称“Mozilla/1.0(Win3.1)”,事情开始变得更加有趣。网景支持框架(frame),由于大家的喜欢框架变得流行起来,但是Mosaic不支持框架,于是网站管理员探测user agent,对Mozilla浏览器发送含有框架的页面,对非Mozilla浏览器发送没有框架的页面。

 

后来网景拿微软寻开心,称微软的Windows是“没有调试过的硬件驱动程序”。微软很生气,后果很严重。此后微软开发了自己的浏览器,这就是Internet Explorer,并希望它可以成为Netscape Killer。IE同样支持框架,但它不是Mozilla,所以它总是收不到含有框架的页面。微软很郁闷很快就沉不住气了,它不想等到所有的网站管理员都了解IE并且给IE发送含有框架的页面,它选择宣布IE是兼容Mozilla,并且模仿Netscape称IE为“Mozilla/1.22(compatible; MSIE 2.0; Windows 95)”,于是IE可以收到含有框架的页面了,所有微软的人都嗨皮了,但是网站管理员开始晕了。

 

因为微软将IE和Windows捆绑销售,并且把IE做得比Netscape更好,于是第一次浏览器血腥大战爆发了,结果是Netscape以失败退出历史舞台,微软更加嗨皮。但没想到Netscape居然以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”。Firefox性能很出色,Gecko也开始攻城略地,其他新的浏览器使用了它的代码,并且将它们自己称为“Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1”,以及“Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0”,每一个都将自己装作Mozilla,而它们全都使用Gecko。

 

Gecko很出色,而IE完全跟不上它,因此user agent探测规则变了,使用Gecko的浏览器被发送了更好的代码,而其他浏览器则没有这种待遇。Linux的追随者对此很难过,因为他们编写了Konqueror,它的引擎是KHTML,他们认为KHTML和Gecko一样出色,但却因为不是Gecko而得不到好的页面,于是Konqueror为得到更好的页面开始将自己伪装成“like Gecko”,并自称为“Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”。自此user agent变得更加混乱。

 

这时更有Opera跳出来说“毫无疑问,我们应该让用户来决定他们想让我们伪装成哪个浏览器。”于是Opera干脆创建了菜单项让用户自主选择让Opera浏览器变成“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51”,或者“Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51”, 或者“Opera/9.51 (Windows NT 5.1; U; en)”。

 

后来苹果开发了Safari浏览器,并使用KHTML作为渲染引擎,但苹果加入了许多新的特性,于是苹果从KHTML另辟分支称之为WebKit,但它又不想抛弃那些为KHTML编写的页面,于是Safari自称为“Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”,这进一步加剧了user agent的混乱局面。

 

因为微软十分忌惮Firefox,于是IE重装上阵,这次它自称为“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ”,并且渲染效果同样出色,但是需要网站管理员的指令它这么做才行。

 

再后来,谷歌开发了Chrome浏览器,Chrome使用Webkit作为渲染引擎,和Safari之前一样,它想要那些为Safari编写的页面,于是它伪装成了Safari。于是Chrome使用WebKit,并将自己伪装成Safari,WebKit伪装成KHTML,KHTML伪装成Gecko,最后所有的浏览器都伪装成了Mozilla,这就是为什么所有的浏览器User-Agent里都有Mozilla。Chrome自称为“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13”。

 

因为以上这段历史,现在的User-Agent字符串变得一团糟,几乎根本无法彰显它最初的意义。追根溯源,微软可以说是这一切的始作俑者,但后来每一个人都在试图假扮别人,最终把User-Agent搞得混乱不堪。

 

各大浏览器诞生年表:

1993年1月23日:Mosaic

1994年12月:Netscape

1994年:Opera

1995年8月16日:Internet Explorer

1996年10月14日:Kongqueror

2003年1月7日:Safari

2008年9月2日:Chrome

 

 

本文译自此处。

User-Agent字符串解析与浏览器识别技术详解 User-Agent是HTTP协议中标识客户端身份的关键请求头,其字符串结构包含浏览器类型、版本、操作系统等核心信息。从技术原理看,UA字符串遵循'Mozilla/5.0 (平台信息) 引擎信息 浏览器信息'的标准格式,这种设计源于Web发展史上的兼容性需求。在现代Web开发中,UA解析技术广泛应用于设备识别、流量统计、差异化内容分发等场景,特别是在移动端适配和爬虫识别等关键领域。随着User-Agent削减计划的推进,开发者需要了解Chrome、Firefox等主流浏览器的UA特征模式,同时掌握User- 阅读详情

相关推荐

为何浏览器的 User-Agent 字符串以 “Mozilla“ 开头?Python

当时的 Netscape Navigator 的 User-Agent 字符串是 “Mozilla/1.0”,其中的 “Mozilla” 是 Netscape Navigator 的代号。总结一下,浏览器的 User-Agent 字符串以 “Mozilla” 开头是源于早期 Netscape Navigator 的代号,并且其他浏览器为了兼容性而模仿。需要注意的是,虽然大多数现代浏览器的 User-Agent 字符串以 “Mozilla” 开头,但是实际的格式和内容可能会有所不同。

ByteLegend的博客 436

浏览器的 User-Agent是什么

浏览器的 User-Agent是什么?为什么所有主流浏览器的 User-Agent 都是 Mozilla/x.0 开头?

smart_dream 3423

张正友标定法-MATLAB实验

该方法最早由微软研究院的Zhengyou Zhang教授提出,1998年发表在IEEE TRANSACTIONS ON PATTERNANALYSIS AND MACHINE INTELLIGENCE,论文题目为:AFlexible New Technique for Camera Calibration。 (一)标定平面到图像平面的单应性 单应性(homography):在计算机视觉中被定义

qq_37845624的博客 8289

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

本文转自:https://blog.youkuaiyun.com/S_gy_Zetrov/article/details/79463093 感谢sgyzetrov翻译 如果熟悉元素审查的童鞋,很多都会发现request headers中的user-agent基本都是以‘Mozilla’开头的 如我把博客编辑器元素审查一下,发现: User-Agent: Mozilla/5.0 (Macintosh; Inte...

老猿Python 1732

实战指南:基于ELK与Grafana构建天融信防火墙日志可视化看板

本文详细介绍了如何基于ELK与Grafana构建天融信防火墙日志可视化看板,包括环境准备、日志收集与解析配置、Elasticsearch存储优化、Grafana看板设计等关键步骤。通过实战案例和优化技巧,帮助用户高效处理天融信防火墙日志,实现安全态势的可视化监控与分析。

weixin_34246529的博客 226

ADS1256单端vs差分接法详解:在STM32上实现8通道电压采集与4通道差分测量的实战对比

本文深入解析ADS1256在STM32平台上的单端8通道与差分4通道电压采集方案,详细对比两种接法的硬件设计、软件配置及性能差异。通过CubeMX配置SPI接口和优化数据读取时序,实现高精度测量,适用于工业监测等高要求场景。

weixin_29165465的博客 245

浏览器UserAgent汇总

做爬虫时,用到了UserAgent,做了个简单的汇总 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us...

司马沉潇的专栏 2742

vasp计算练习1-Si

si的vasp训练流程

qq_41074165的博客 3297

浏览器 User-Agent 字符串的故事

你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applications,简称NCSA)开发,并于1993年发布...

weixin_33860737的博客 83

PyTorch深度学习实战(29)——变分自编码器(Variational Autoencoder, VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。

盼小辉丶的博客 1万+

(二)使用VS2022克隆下载C++自制植物大战僵尸游戏教程

本文将介绍如何使用VS2022克隆下载《植物大战僵尸C++自制版本》。Gitee项目地址:Gitee仓库地址Github项目地址:Github仓库地址游戏官网地址(下载可直接运行)游戏官网。

尔灵尔亿的博客 4940

转载:浏览器 user-agent 字符串的故事

转载自http://www.cnblogs.com/ifantastic/p/3481231.html。 你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? 故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center fo...

weixin_30596735的博客 121

Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介

Plces 电力电子仿真专业教程系列依托专业的电力电子仿真软件Plecs对各种电力电子常用的拓扑及实际设计的方案进行系统及仿真与软件代码仿真实践。通过对各种电路仿真原理的讲解及专业C语言代码程序的编写,提升学员的系统设计能力,软件编程能力与理论分析能力。

3645

为什么浏览器User-agent总是有Mozilla字样

最近在研究计算机网络,对浏览器的http请求报文有所了解,发现一个有趣的现象。搜索了一下,找到以下文章,笑死我了。你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safa

Xiaowo 6891

Axure RP9.0 教程:左侧菜单列表导航 ( 点击父级菜单,子菜单自动收缩或展开)【响应式的菜单导航】

1. 设置目标原件时,选择切换,这样就可以实现,当原件展示时,点击自动隐藏,隐藏时自动显示; 2. 展开/收起原件(推动/拉动原件)设置为方向**向下**

专注于计算机研发知识和资讯分享 1381

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

血战的浏览器历史

普遍认为,91年正式发布的WorldWideWeb是全球最早的一款浏览器,后来改名为Nexus,特点是可以兼容Unix和Microsoft DOS的,但是还不支持图片的显示,虽然功能有限,但在当时却非常流行。 93年,美国伊利诺州的NCSA组织发明了一款可以显示图片的浏览器,可是偏偏就命名为马赛克(Mosaic),这不当紧,让“网络管理员”抓狂了,怎么分辨你的浏览器是否能显示图片呢,所以U...

weixin_33696106的博客 172

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

User-Agent

User-Agent

EmotionComputer 7944

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

浏览器的user-agent为什么如此混乱

下面是几个不同浏览器中的user-agent 浏览器 user-agent chrome Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36 firefox Mozilla/5.0 (Windows ...

薛定谔的雄猫 2251

浏览器内核,user-agent

最近web界被红芯事件吵得沸沸扬扬,也激起了我对浏览器内核进一步的学习热情。 先来看看user-agent,它是我们前端开发获取用户操作系统,浏览器版本等数据的常用方法: UA存在于每次http请求的请求头中,像这样 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0....

wcghhk的博客 2142
上一篇: 浏览器缓存机制介绍
下一篇: JdbcTemplate访问方式以及spring和mybatis整合的原理
转的你死
博客等级 码龄15年 2粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值