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验证方式-加密顺序:
返回参数说明:
名称 | 必填 | 类型 | 说明 | 示例 参数另存 |
alias | 否 | String | 7 | |
browser | 否 | Array | ||
camouflage | 否 | Boolean | ||
channel | 否 | String | Nightly | |
codeid | 否 | Integer | 状态码,返回10000状态都会进行计费。具体说明可查看状态码说明 | 10000 |
curtime | 否 | String | 当前服务器时间戳 | 1633915763 |
detectCamouflage | 否 | Boolean | 1 | |
device | 否 | Array | ||
engine | 否 | Array | ||
features | 否 | Array | ||
hidden | 否 | Boolean | ||
identified | 否 | Boolean | ||
message | 否 | String | 请求状态说明 | 返回成功 |
name | 否 | String | 姓名 | Windows |
options | 否 | Array | ||
original | 否 | String | 6.1 | |
os | 否 | Array | ||
retdata | 否 | Array | 回数据集合,可能是数据、对象或者字符串 | |
stock | 否 | Boolean | ||
type | 否 | String | desktop | |
useFeatures | 否 | Boolean | ||
version | 否 | Array |
JSON返回示例:
状态码说明:
状态码 | 说明 |
10000 | 返回成功 |
10001 | appid必须指定,可以我的应用里面查看 |
10002 | sign值必须指定,加密规则请前往帮助中心查看 |
10003 | sign值验证不通过,加密规则请前往帮助中心查看 |
10004 | 时差不能超过10分钟,可以不传递这个参数,注意时间戳单位是秒 |
10005 | appid错误,请检查appid值,前往会员中心->我的应用查看或添加 |
10006 | 当前IP地址未授权,请前往用户中心->我的应用添加ip{@info} |
10007 | 应用被禁用,请联系客服处理 |
10008 | 应用内没有该接口,请到我的应用里面添加这个接口 |
10009 | api接口不存在 |
10010 | 您没有添加该api接口 |
10011 | api已经到期 |
10012 | 没有订购任何api,请前往购买后再操作 |
10013 | 该接口已经暂停使用 |
10014 | 未知的错误,可以联系客服处理 |
10015 | 参数个数错误 |
10019 | {@info} |
10017 | time必须是整型 |
10018 | 次数不足 |
10020 | 子接口不存在,可能已经被关闭 |
10021 | 服务器发生错误 |
10022 | 帐户余额不足,请充值! |
10023 | 订单提交成功,等待回调结果 |
10024 | 调试模式数据 |
10025 | 查无数据 |
请求示例:
以下内容转载自:http://madong.net.cn/index.php/2016/05/557/
(这个文章对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
,