什么是UA(User-Agent)识别系统?

1,055 阅读6分钟

UA(User-Agent)是一个特殊字符抬头,通过服务器进行识别应用的操作系统、版本类别及标识、CPU型号、浏览器内核及语言、硬件信息及相关型号、浏览器渲染引擎、浏览器语言等。


通常网站会通过 UA(User-Agent)来给不同的操作系统、不同的浏览器发送不同的页面,识别这些内容就需要UA识别系统来进行。


UA字串的标准格式:浏览器标识(包括:操作系统标识;加密等级标识;浏览器语言)渲染引擎标识 版本信息

API接口: 根据用户user-agent信息识别操作系统、浏览器信息、浏览器内核、硬件信息及相关型号,识别率达90%以上

后附:user-agent(UA)识别Api接口代码:

Api文档:

子接口:

  • 手机电脑设备型号识别

接口地址: https://登录后显示/njs/167/319(支持:http/https)

返回格式:json,xml

请求方式:GET,POST

POST 请求需要设置Header头:Content-Type: application/x-www-form-urlencoded;charset=utf-8

请求说明:

Md5验证方式-加密顺序:

返回参数说明:

名称必填类型说明示例 参数另存
aliasString7
browserArray
camouflageBoolean
channelStringNightly
codeidInteger状态码,返回10000状态都会进行计费。具体说明可查看状态码说明10000
curtimeString当前服务器时间戳1633915763
detectCamouflageBoolean1
deviceArray
engineArray
featuresArray
hiddenBoolean
identifiedBoolean
messageString请求状态说明返回成功
nameString姓名Windows
optionsArray
originalString6.1
osArray
retdataArray回数据集合,可能是数据、对象或者字符串
stockBoolean
typeStringdesktop
useFeaturesBoolean
versionArray

JSON返回示例:

状态码说明:

状态码说明
10000返回成功
10001appid必须指定,可以我的应用里面查看
10002sign值必须指定,加密规则请前往帮助中心查看
10003sign值验证不通过,加密规则请前往帮助中心查看
10004时差不能超过10分钟,可以不传递这个参数,注意时间戳单位是秒
10005appid错误,请检查appid值,前往会员中心->我的应用查看或添加
10006当前IP地址未授权,请前往用户中心->我的应用添加ip{@info}
10007应用被禁用,请联系客服处理
10008应用内没有该接口,请到我的应用里面添加这个接口
10009api接口不存在
10010您没有添加该api接口
10011api已经到期
10012没有订购任何api,请前往购买后再操作
10013该接口已经暂停使用
10014未知的错误,可以联系客服处理
10015参数个数错误
10019{@info}
10017time必须是整型
10018次数不足
10020子接口不存在,可能已经被关闭
10021服务器发生错误
10022帐户余额不足,请充值!
10023订单提交成功,等待回调结果
10024调试模式数据
10025查无数据

请求示例:

以下内容转载自:madong.net.cn/index.php/2… (这个文章对UA系统的以生动的故事方式写得非常明白、透澈,借来说明一下枯燥的代码用途。)

很久很久以前有一个浏览器名字叫 NCSA Mosaic

很久很久以前有一个浏览器名字叫 NCSA Mosaic

紧接着也出现了一个 Mozilla 的浏览器 (Mozilla 的意思是 Mosaic 终结者)
后来 Mozilla 的正式发布版本是 Netscape 它把自己标称为Mozilla/1.0 (Win3.1)
由于 Netscape支持框架显示,后来框架在大家中间流行起来了,但Mosaic不支持框架。
所以网站管理员们则通过 User-Agent 判断,如果是Netscape浏览器则进入框架(html frame)的页面,如果不是Netscape 浏览器则进入没有框架的页面.

Netscape 没有风光多久,微软也推出了自己的 IE浏览器 。IE浏览器也支持 框架 但是很遗憾,网站管理员们不认识它呀,因为IE的 User-Agent 没有Mozilla 所有没有人理它。后来微软抓狂了,你们不就是只认识User-Agent 头里有 Mozilla 字符的浏览器么,于是宣称自己是“兼容Mozilla”的,开始模仿Netscape,把自己标称为Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。这样一来 IE 也有了Mozilla (其实是伪装的…) 所以那些框架也能看到了.

后来随着微软把浏览器捆绑进自己的操作系统里一起卖,随就爆发了浏览器大战。结果大家都很清楚,Netscape失败了。而微软大胜了,至今微软的IE依然影响着 w3c 影响着所有浏览器。

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 的优秀,网站管理员们会判断浏览器是否是 Gecko 的,如果是则把更先进 更漂亮页面显示给这个浏览器,其他浏览器就没有这个待遇了。

(比如现在的HTML5 , 如果我判断是你firefox的新版本则跳转到地址1,如果是ie则去地址2)

看到 Gecko 能看到这么漂亮的页面 Linux 的平台的孩子们很桑心,因为他们创建了基于KHTML引擎支持的Konqueror也跟 Gecko 一样优秀,但却不带有Gecko而被识别。结果Konquerer开始伪装自己“像Gecko”那样以看到更漂亮的网页,并标称自己为 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD)(KHTML, like Gecko),这个世界就抽风了….

Apple开发了Safari,使用了KHTML,同时也增加了很多新特性,后来另起炉灶叫了WebKit,但是它有希望能够看到那些为KHTML编写的网页,于是Safari标称自己为Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5,就更加混乱了.

Google也开发了自己的浏览器Chrome,使用了Webkit,有点像Safari,希望能看到为Safari编写的网页,于是决定装成Safari。Chrome使用了WebKit渲染引擎,想装成Safari,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

最后:

IE伪装成 Mozilla
webKit 伪装成 KHTML
KHTML 伪装成 Gecko

最后 opera 伪装成上面任何浏览器

同时所有的浏览器又都宣称自己是 Mozilla