Sinclalir Li,
Yu Zheng,
SWO
2014-08-07
中文名称“用户代理”,它是浏览器大战时代的产物(可在“百度百科”搜索“用户代理”来了解一下浏览器发展史),要用于服务器识别浏览器端设备的各种能力,以便服务器端发送与 之能力相应的内容。也就是项目中经常遇到的"User Agent String"(或Ua string)。由于数据业务是近年来手机的主要功能,很多数据服务网站仍需要参考UA信息提供正常服务, 尤其在运营商的服务系统中使用最多。
二,User Agent string 分类
和公司的产品线主要分为feature phone和smart phone一样,Ua string 也因平台不同有所不同,但主要也分为feature phone 和smart phone 两大类; 根据手机应用的不同,又可分为browser UA和MMS UA.
其中下面先介绍browser UA,即浏览器中使用到的UA string.
1,针对smartphone 而言,当前browser UA分为以下几类:
1.1 Android 平台智能机,分为以下两种情况
(1),一般Android 平台项目, UA string规则
该ua string规则,主要针对的是default 浏览器(注意不是chrome浏览器),它一般存在于Google CDD文档3.4 Web Compatibility章节中(见左侧Google CDD 文档),会定义具体的android 版本所对应的Ua string格式、参数,项目组可将其中的参数确认好,再将拼合在一即可。
例如,ONE TOUCH 6012X的UA string为Mozilla/5.0 (Linux; Android 4.4.2; en-us; ONE TOUCH 6012X Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36
另外,需要注意的是:
- 务必选择android版本对应的的CDD文档
- 注意ua string字符间的空格问题
- 注意ua string参数$(Model) ,指的是about phone -> module nubemr的值,请项目组务必认真确认好。
- 关于参数$(Local) ,默认中出中国区为"zh-cn", Global为en-us即可,且这个参数会跟随着手机系统参数的修改而自动更新。
- 运营商可能会对User ageng string进行相关定制工作,比如Vodafone,经常要求在最后面加上SVN版本号,例如SVN/XX.XX.XX.XX,项目只要按着他们的需求定制即可
- 关于android 4.4 user agent string中新增的chrome version,请项目组通过使用android default browser访问 logme.mobi来读取chrome真正的版本号,直接查看chrome 浏览器应用的版本是不对的
与OEM厂商不同,仅中国移动定义了自己的一套UA准则,与其Google的格式有所不同,其中需要确认的参数也有所不同,项目组只要按照它的格式确认即可。
例如: TCL S838M /V1 Linux/3.4.5 Android/4.3 Release/JELLYBEAN browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.3;
- 友情提醒下:根据之前的项目反馈,CMCC user agent string中一旦出现TCL字符,就报出google search无法使用的问题,一般项目都修改为TCT
Firefox 系统对UA并无相关可供参阅的文档,根据既往的经验项目组可以通过下面两个步骤来生成Ua String
(1)使用默认浏览器访问what'smyuseragent.com或者logme.mobi,确认当前系统的默认的浏览器user agent 是什么,一般而言应该是类似于下面的字符串,且红色的部分会
随着Firefox OS的版本变化而不断变化。
Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0
(2)鉴于Mozilla提供的UA string中并不包括与产品名相关的任何信息,导致运营商想要定制的相关部分无法实现,比如运营商服务器根据UA string来识别特定手机,以此来提供特定的服务
。
经过我们内部与Mozilla的长期沟通,最后达成了一致,即在Firefox系统的User agent string另加入产品名,例如下所示, 需要项目组确认的是请确认产品名与下面的一致。
Mozilla/5.0 (Mobile; ALCATELOneTouch4012X; rv:18.1) Gecko/18.1 Firefox/18.1
(3)根据Mozilla方面确认的信息,MMS 并无特定格式的UA string,它与Browser 共用同一个UA string.
1.3 Windows phone UA规则
鉴于公司当前仅做过一款wp的产品,所以对此系统的user agent并无太多的参考资料,留待下一步研究。
2,针对feature phone browser UA:
feature phone时代,由于各家使用操作系统不尽相同,也就造成了不同的厂商使用不同的的UA string规范。我们公司也有自己的UA string规范,主要由产品名,java能力,浏览器版本组
成,具体详见下图:
另外,有下面一些事情需要注意:
- 软件版本号默认为1.0,针对有软件版本号需求的运营商需求,可以直接修改该版本号
- 如果当前feature phone并不支持Java,可省略JAVA部分
- 注意字符间的分隔符及空格
- 浏览器的类型和名称可能会随着项止使用的不同有所更改,比如ObigoInternetbrowser/Q3C,DORADO/2.0(展讯平台)
- 不管当前feature phone使用提MTK平台还是展讯平台,feature phone ua规范都适用.
- 关MMS UA string一直以来都没有一个正式的说法和规范。
- 当前针对feature phone和smart phone自定义了如下的规范
- feature phone的MMS UA String与browser UA 共用
- Android平台的MMS UA string使用下面的规范"产品名-MMS/2.0",例如"ONE_TOUCH_6032X-MMS/2.0"
- Fireofx phone, Windows Phone由于并没有相关明确说过与MMS ua string的相关信息,所以这两种平台没有MMS string
- 从当前的智能手机发展趋势来看,MMS UA string很快会消失,不再需要
三,User agent string 中经常遇到的问题
1,feature phone
根据既往的经验,项目组经常会遇到手机浏览器在打开网页时,服务器端提供的不是适合手机端浏览的页面, 而是pc版本页面的问题。这种情况一般都是由于服务器没有正确解析UA string 所导 致的, 主要原因在于Feature Phone时代,不同的厂家并无一致的UA string规范,所以导致服务器也没有统一的规范来解析,所以出现这种问题并不奇怪。解决方法是去相关网站联系注册UA string。 一般而言需要CTS出面处理,但相关的注册的范围也仅限于运营商的网页。对于其它非运营商网站出现该问题,SWO认为没有必要去花太大的精力去Push.
2, Smartphone
在android系统,我们当前存在多种名称定义,包括commerical name, marketing name, module name, code name等,但User agent string会用的仅仅是code name,它应该仅仅与about phone ->
module number保持一致,主要用于与在进行google CTS测试时会核对这两项是否一致,其它的命名规则与UA无关。
由于user agent信息在运营商投标中会被频繁用到,所以在项目组申请UA信息的请务必做好备份工作,备份的内容主要包括:
- user agent string
- browser user agent string
- MMS user agent string (如果与browser user agent 不同)
- Profile 链接
User Agent Backup
请在打开该链接后找到文件“Project User agent info(From_2014_10_29)”。由于该文件所在的SPS系统使用了VSS版本独占管理工具,所以各位在编辑完文件后,务必“签收入/check in ”至服务器,否则后面的人无法编辑该文件。 如果不了解“签入/签出”操作方法,请参考同网页中“A_关于Check in_Check out“文件。
