一篇文章带你了解清楚什么是UA

article/2025/8/24 19:19:55

最近在做一部分的UA的统计、正好做下记录、有需要的同学也可以借鉴一下

 

一、首先讲一下UA是什么

        UA,全称为“User Agent”,中文通常直译为“用户代理”,但从其产生作用的机制来看,或许称之为“浏览器标识”或“浏览器名片”更为妥帖。

        实际上,UA是一个浏览器被用来访问网站时发送给网站服务器的一串特定字符,其内容通常包含了“操作系统及版本”、“CPU 类型”、“浏览器及版本”、“浏览器渲染引擎”、“浏览器语言”、“浏览器插件”等信息。网站服务器可以根据这串字符大体判断出用户所使用的软硬件环境,进而采取不同的内容策略。这些内容策略在互联网早期时代通常是为了解决兼容性问题

以iPad上的Safari为例,其使用的UA就是以下字符串(根据Safari版本的不同,UA字符串可能会有所变化

Mozilla/5.0(iPad;U;CPU OS 3_2_1 like Mac OS X; en-us)AppleWebWebKit/531.21.10(KHTML, like Gecko) Mobile/7B405

这一组字符串的组成及其说明如下:

 

 二、UA的历史进程

1、浏览器的诞生

        因特网诞生后,英国计算机科学家Berners-Lee率先指出将超文本嫁接到因特网的可行性。1990年,Berners-Lee在一台NeXT工作站上写出了第一个网页实现他的想法。就这样,万维网(WorldWideWeb)诞生了,Berners-Lee也因此被称为Web之父。

同年,Berners-Lee还制作了万维网所需的两个最基础的工具——第一个网页服务器和第一个网络浏览器。Berners-Lee将浏览器命名为“Nexus”。从这个意义上讲,Berners-Lee也是浏览器之父。然而,Nexus浏览器只能显示文字,无法显示图片,这就为此后其他浏览器的出现留下了市场空间,也为UA的出现埋下了种子。

2、UA的诞生

        由于Nexus浏览器的不足之处,实现浏览图片的功能就成了用户的迫切需求。1993年1月23日,National Center for Supercomputing Applications,简称NCSA组织,发布了互联网历史上第一个图形化的浏览器——Mosaic(马赛克)。Mosaic浏览器可以同时展示文字和图片,使浏览器变得有趣而流行起来。

        为了发挥Mosaic浏览器的优势,让网页服务器可以向Mosaic浏览器推送有图片的内容,有必要让网页服务器将Nexus浏览器和Mosaic浏览器区别开来。NCSA组织的做法是,在访问网页服务器时,首先向服务器发送特定的字符串:“Mosaic/2.0(Windows 3.1)”以此作为自己浏览器的标识。从此UA诞生了。

此时的UA确实一身清白,仅仅表明了自己是什么浏览器和所在系统,以及两者的版本号。

3、Mozilla浏览器诞生

        1994年,Mosaic浏览器的研发核心成员马克·安德森(Marc Andreessen)和几何图形发生器的发明人吉姆·克拉克(Jim.H.Clark)组建公司发布了另一款浏览器,命名为Mozilla,中文名称摩斯拉。从此,堪称伟大的Mozilla浏览器诞生了。

        1994年12月Mozilla改名为Netscape,即网景浏览器,但Netscape仍然将自己标识为Mozilla:“Mozilla/1.0(Win3.1)”。由于当时网页开发中开始流行框架技术,Netscape支持框架技术,而其他浏览器要么不支持要么支持的不好, Netscape很快成为当时最流行和市场占有率最高的浏览器。同时,网站管理员在服务器的设置上开始使用探测技术和差异化页面,对Netscape浏览器发送含有框架的页面,对非Netscape浏览器发送没有框架的页面。

        Mozilla在浏览器历史上的地位举足轻重。不但其诞生之后风靡程度一时无两,成为众多浏览器竞相学习的对象。而且在随后的历史中,虽然其几经波折,多次更名,屡屡面临生死考验,但Mozilla每每如凤凰般涅槃重生,其“后嗣”始终在市场上占有一席之地。甚至到了今天,Mozilla作为一款浏览器本身已从市场上消失,但众多浏览器仍然在UA中将自己标记为“Mozilla”。

        可以说,Netscape以及后续的Firefox浏览器是Mozilla根正苗红的正统传人,在UA中将自己标记为Mozilla无可非议。但是很快,“六耳猕猴”出现了,其他浏览器也纷纷将自己标记为Mozilla。这一切的“始作俑者”,正是微软的IE浏览器。那一年,是1995年。

4、Internet Explorer的诞生

        1995年8月16日,微软开发了自己的支持框架技术的浏览器Internet Explorer(简称IE),并希望能够取代Netscape浏览器。但微软很快就发现,尽管IE浏览器也同样支持框架,却往往并不能收到包含框架的页面。原因是网站的服务器会在收到浏览器的访问请求时先判断是什么浏览器在访问自己,如果UA中含有Mozilla,则认为是Mozilla(Netscape)在访问自己,就向浏览器推送有框架的页面;如果UA中不包含Mozilla,则认为是其他浏览器在访问自己,就向浏览器推送不含框架的页面。

        为了用户使用IE时也能收到有框架的页面,微软开始声称自己是兼容Mozilla的,并且模仿Netscape的标识,使用Useragent将自己标记为“Mozilla/1.22(compatible; MSIE 2.0; Windows 95)”,于是IE也可以收到含有框架的页面了。从此,Useragent开始成为浏览器解决兼容性和改善用户体验通常采取的一种重要技术。之后IE版本几经更新,所使用的UA与第一代IE或多或少都会有所区别,但伪装成Mozilla的做法则一直没有改变,并被后世的浏览器纷纷效仿。

        从这段历史我们可以观察到,在1990年-1995年这短短6年时间里,我们经历了浏览器的诞生、UA的出现、UA伪装被IE浏览器用于解决兼容性问题三个重要历史事件。而自1995年至今的20多年间,UA伪装被广泛应用,基本成为每一个浏览器的必备功能

        浏览器行业及其UA经过20多年的发展,互相竞争,互相借鉴,逐渐形成了4支使用不同内核的市场力量。

5、逐渐演化出来的浏览器分支

Gecko

 

        随着IE浏览器的流行,Netscape逐渐退出历史舞台,但其公司内的技术宅们却不甘失败,2003年7月15日以Mozilla基金会(Mozilla org)名义发布了Firefox浏览器,其浏览器内核,被命名为Gecko,仍然沿用Mozilla浏览器的UA “Mozilla/5.0(Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826”

        由于Gecko的出色,和IE的止步不前,UA的探测规则一度又发生了变化——使用Gecko的浏览器被发送了更好的网页代码,其他浏览器没有这种待遇。于是众多浏览器纷纷将Gecko加入到自己的UA当中。

        就Mozilla这一名号来说,Gecko(Firefox)根正苗红,堪称正统,可以称之为大唐圣僧。与此同时,由于吃唐生肉可以长生不老,其他浏览器恨不得都来咬上一口,至少蹭蹭热点,纷纷在自己的UA中加入Gecko,这也就是like Gecko这一字符的由来。

KHTML/WebKit

        1996年10月14日,Linux开源社区开发出使用KHTML内核的Konqueror浏览器时,既将自己伪装成Mozilla,又声称兼容Gecko(like Gecko)。其浏览器UA为“Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”

         KHTML/WebKit是非常优秀的浏览器核心,众多软件厂商纷纷开发基于这一核心的浏览器新品。Konqueror、Safari、Chrome先发在前,QQ浏览器、搜狗高速浏览器、360浏览器紧随其后。它就如同孙悟空一样会七十二般变化,不断衍生出新的浏览器,拥有众多猴子猴孙,不亏为浏览器界的大师兄。

         2003年1月7日,苹果使用源自KHTML渲染引擎的Webkit内核,开发了Safari浏览器。苹果为了兼容性考虑,将KHTML的UA中的Mozilla、Gecko、KHTML统统继承下来。于是苹果将Safari浏览器的UA标记为“Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”。与IE浏览器不同的是,苹果在其部分浏览器默认UA中除了伪装成Mozilla之外,还在UA的末尾标记出自己独特的浏览器标识Safari,这为后续Safari流行之后网站针对Safari进行优化留下了空间(其ipad则并未做此标识),现在看来,不得不佩服苹果的自信与野心。目前众多网站特别是移动端的网站已纷纷针对Safari做专门适配。

         2008年9月2日,谷歌使用Webkit作为渲染引擎,开发了Chrome浏览器。和Safari一样,它想要浏览那些为Safari编写的页面,于是继承了Safari的UA“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”,并将自己的浏览器名称添加进去,收到的效果,也与苹果的做法如出一辙。

Trident (IE)

        随着IE浏览器成为主流,其地位似乎越来越不可撼动。微软开始不思进取,IE浏览器虽然因其市场地位而获得了兼容性的优势,但其功能却裹足不前,易用性越来越差,逐渐跟不上时代步伐。此时,诞生了众多以IE(Trident内核)为浏览器核心的功能增强型浏览器,如世界之窗浏览器、遨游浏览器(旧版)等,其UA也与IE存在继承关系,再此不一一赘述,感兴趣的朋友,可以查看本文最后所附清单。IE及其Trident内核,就如IE浏览器一样,虽然曾经风生水起,贵为天蓬元帅,但现在已经臃肿笨拙,不堪重用。

Opera

 

        1994年Opera浏览器发布,它不像其他浏览器那样把自己标记成其Mozilla,而是使用自己特有的UA “Opera/9.51 (Windows NT 5.1; U; en)”。但这种坚持也是导致Opera长期以来最为人所诟病的兼容性差的重要原因。使用其他浏览器非常正常的网页内容,使用Opera常常不是排版错乱就是乱码,要么就是字体显示颜色过浅看不清(特别是中文字体)——因为多数网站主要以IE或者说是早期Mozilla的渲染标准编写。

        最终为了市场,Opera不得不做出些许妥协,但仍然不是简单粗暴地把自己标记为Mozilla,而是主张让用户来决定伪装成哪个浏览器。于是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)”。

        由于Opera的这一做法非常人性化,取得了不错的效果,之后出现的浏览器或浏览器的新版本,无论是Mozilla一脉,或是IE及以IE为核心浏览器一族,还是Konqueror、Safari、Chrome这一队,都纷纷效仿,添加可以由用户修改UA的功能——要么与Opera一样提供预置好的数个UA供用户选择,要么提供UA修改功能使用户可以将UA修改为任意内容。

        只不过,由于Opera特立独行,虽然其口碑很好,功能完备,市场占有率却一直没有起色

其他的衍生产品

         自第一个网络浏览器发布至今,已有28年历史。浏览器的开发难度,也已由顶级技术大神的造物,变成了普通软件工程师的玩物。市场上,浏览器如雨后春笋般出现,呈现出百花齐放的局面。只是,目前的浏览器数量虽多,其所使用的浏览核心,却无非Gecko 、IE、KHTML(WebKit)、Opera四大族裔。故其所使用的浏览器UA,也几乎均与其前辈存在继承关系。就现状而言,虽然各个浏览器UA都会有所区别,却也可以总结出如下特点:

1、几乎所有的浏览器都提供了UA修改功能,供用户伪装成其他浏览器;

2、默认UA均以Mozilla开头(Opera除外)。

3、相较PC端的浏览器,移动端往往提供更为方便的修改UA功能

4、几乎都会提供分别“伪装”成iPhone、ipad、PC(IE)三种UA选项。

        如果把UA的作用视为一种伪装的话,会得出一个非常有趣的结论:Chrome伪装成Safari;Safari伪装成KHTML;KHTML伪装成Gecko;Gecko、IE伪装成Mozilla,最终所有的浏览器(只有Opera除外)都伪装成Mozilla。而Mozilla以一个浏览器而言,已经从市场上消失,却还活在其他浏览器的UA之中。

        微软可以说是这种伪装行为的“始作俑者”,但后来的每一个浏览器在模仿微软的做法。因为,网站的开发者往往会因为某一浏览器所具备的某些功能而输出一些与之对应的网页代码来实现特殊的功能,当其他浏览器也具备这些功能时,就试图去“伪装”成这一浏览器让网站向自己输出与之同样的网页代码,而不是被阉割了功能的网页代码。各个浏览器都是为了让用户在访问网站时能够获得最好的内容和浏览体验。

附录: 浏览器默认UA大全

# 1、移动端# Android N1Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1# Android Pad Moto XoomMozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13# BlackBerryMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1 (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1# QQ浏览器 For androidMQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1# Opera浏览器Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10# safari iOS 4.33 – iPhoneMozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5# 2、PC端浏览器# 搜狗浏览器 1.xMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)# Green Browser浏览器Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)# The World浏览器 2.xMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)# The World浏览器 3.xMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)# Maxthon浏览器Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)# TT浏览器Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)# 360SE浏览器Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)# safari 5.1 – WindowsMozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50# IE 9.0Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)# IE 8.0Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)# IE 7.0Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)# IE 6.0Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)# Firefox 4.0.1 – WindowsMozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1# Opera 11.11 – WindowsOpera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11# Chrome 17.0 – MACMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11

http://chatgpt.dhexx.cn/article/qsUnAy7V.shtml

相关文章

小白想学大数据?

一.大数据领域的从业人员,应该牢牢把握2018年大数据这三个大的技术方向: 1、Hadoop大数据开发方向; 2、数据挖掘、数据分析和机器学习方向; 3、大数据运维和云计算方向。精通任何方向之一者,均会前(钱)途无量。 3个方向中,大数据开发是基础。以Hadoop开发工程师为例,…

Java开发者,我到底要不要学大数据开发?

一入编程深似海,从此女神是路人。没办法,这行就这样。你不学Spring,总不是跑去学JVM/微服务架构/分布式去了,不断学习根本避免不了。所以关键在于把时间投在学什么上比较划算。 明确表达我的观点,作为一名Javaer进阶大…

从0开始学大数据-数据仓库建模

为什么要数据仓库建模 数据模型是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。有了适合业务和基础数据存储环境的模型,那么大数据就能获得以下好处: 性能:良好的数据模型能帮助我们快速查询所需要的数据&a…

【金猿案例展】某国家级研究所——组学大数据分析平台建设

荣联科技集团案例 本案例由荣联科技集团投递并参与“数据猿年度金猿策划活动——2020大数据产业创新服务企业榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 大数据时代下,科学大数据已经成为科技创新和社会经济发展的新动力。生物信息学经过近…

零基础学大数据分析现实吗

学习大数据分析已然成为社会的大势所趋,随着传统公司的被迫更新,新兴公司的数据人才增多,大数据技术显得格外的重要。当大数据的大浪凶猛袭来时,要么你冲上浪尖,做时代的弄潮儿,要么被打入海底,…

零基础可以学大数据分析吗

国家的大数据战略实施已经到了关键的落地时期,创新、实体经济都跟大数据分析有着深度的融合,在各行各业都能看到大数据分析师的身影,另外大数据安全管理和立法等方面也进入到了关键时刻,所有这些无不在向人们诉说着一个事实&#…

学大数据需要具备四种条件?你具备几种?

现在学大数据的越来越多了,可是你知道学大数据需要什么条件吗?我来说说四个必备条件。 大数据现已成为年代开展的趋势,很多人纷纷挑选学大数据,想要进入大数据职业。大数据技术体系巨大,包含的常识较多,体…

学大数据专业后悔死了?学大数据以后好就业吗?

前言 从近几年来看,大数据专业的就业情况和就业前景是非常不错的,而所谓的学大数据专业后悔死了等等言论都是不实或偏激的。小编在收集整理相关资料后发现大多数同学认为学大数据专业后悔死了有两个原因:一是大数据专业学习难度大&#xff0…

女生适合学大数据开发吗,女生怎样学大数据开发

红遍全球的大数据开发,不仅仅吸引了男孩子的目光,更是让不少女孩子为之兴奋。但是有些女孩子被刻板成见所击败,不敢涉足大数据开发。那么,女生适合学大数据开发吗?女生应该怎样学习大数据开发? 女生适合学大数据开发吗: 1、女生适不适合学大数据开发这个问题,就跟女生…

哪些人适合学大数据分析

哪些人适合学大数据分析,实际上,问题还有个潜台词是“什么人学习数据分析,会更容易取得成功(比如职业成功)”,这个要关乎你的兴趣、付出和机遇。但要做到出类拔萃,除了上面三点,还需要一点天赋,…

从0开始学大数据(十二)

30 | 当大数据遇上物联网 某位互联网大佬说过,未来 20 年最有发展潜力的三项技术分别是:区块链、人工智能、物联网。关于区块链,现在可能是最有争议也是最迷茫的时候;关于人工智能的价值,我们已经达成共识并稳步发展&…

零基础学大数据难吗?

零基础学大数据难吗?通过各大招聘平台我们可以看到,同样都是互联网技术岗位,大数据技术岗位的薪资普遍较高,不仅仅是因为目前布局大数据技术是各个企业的战略目标,同时也因为大数据技术有一定的难度,那对于…

《从0开始学大数据》的启示

《从0开始学大数据》学习后感 方法论与哲学学习的目的以及形成思维体系抽象能力,为什么是A而不是B?从MR-Spark看产品思维模式思维 大数据发展历史分布式计算的核心思想——移动计算而非移动数据大数据系统与大型网站系统设计思路的差异大型网站的思路大数…

大数据需要学哪些内容

大数据技术是当今互联网时代的热点之一,目前已经成为了各行各业中的最佳选择。随着物联网、人工智能、云计算等技术的发展,数据的规模不断增大,数据分析、数据挖掘、人工智能等应用也随之蓬勃发展,对大数据开发的需求越来越多。因…

机器学习视频课程(超清完整11周)分享给大家!

以下是视频内容截图~(视频大小约9G),下载方式见文末。 下载地址:关注“北斗大数据”微信公众号回复 3 即可获取。

李宏毅20212022机器学习

目录 重磅须知我维护的其他项目其他优质课程(建议关注,以免迷路哈哈哈)更新日志2021课件及作业资料(已完结)2022课件及作业资料(已完结) 重磅须知 (重磅须知,统一说明&am…

MATLAB初步进行机器学习

文章目录 Matlab 初步进行机器学习实时脚本的介绍导入数据用导出模型进行预测导出代码进行预测决策树预测和可视化交叉验证的测试集和随机数种子 计算F1分数和AUC,绘制ROC曲线多分类问题F1分数计算Matlab计算F1分数ROC曲线与AUC曲线 网格搜索调参关于调参调参的定义…

2022机器学习好网站大收藏

目前, 一般从事传统机器学习(决策树、逻辑回归、SVM等)的人, 不需要关注人工智能(深度学习、NLP等)方面的知识, 但五花八门的网站,往往无法聚焦到传统机器学习中。 笔者花了近十天时间,到各个网站上去玩了一遍&#x…

机器学习平台的简单调研

1. MLOps简介 在机器学习的任务过程中,可能面对以下几个问题: 随着项目体量增加,数据不足时,需要相关团队来负责数据采集、标注和清洗。然而,采集数据本身太复杂以至于需要多层级的组织来完成,例如当采集的…