相信大多数童靴对 UserAgent (以下简称 “UA”)都比较了解,但在开头还是简单介绍一下 UA 的基本概念,方便理解。
UserAgent 又称为「用户代理」,简称 UA 。 UA 的存在,能够让服务器能够识别客户端的信息,从而针对不同客户端做出特定的行为。
比如,给浏览器语言设置为中文的用户观看中文页面;给使用移动浏览器的用户推荐 APP 下载链接等。
UA 是一串字符,其标准的格式为:浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识版本信息。
例:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
通过 UA ,你能对用户使用的软件硬件情况有个大致的了解。比如以上的例子就可以翻译成:
Windows 10 系统下的 64 位计算机,使用 Webkit 渲染引擎的 Chrome/Safari 浏览器。
回答这个问题之前,需要先回答另外两个问题。
① iPhone;U 这种组合合理吗?
合理。不过仅限于 iOS4 以及之前的版本。
iOS4 以及之前的 UA :Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7
iOS5 以及之后的 UA :Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 Safari/7534.48.3
可以发现,iOS5 开始,‘ U ’消失了。
②‘ U ’的意思?为什么 iOS5 开始就没有‘ U ’
‘ U ’是加密等级的标识,‘ U ’表示「 128AES 」强数据加密,相对于‘ I ’弱安全加密「 40AES 」和‘ N ’无安全加密。
iOS4 以及更低的版本,均是使用「 128AES 」类型进行加密。在 UA 中标示为‘ U ’ 。
而从 iOS5 开始,数据开始使用「 256AES 」类型进行加密。由于‘ U ’ 是特指「 128AES 」类型,所以 UA 中不再有‘ U ’ 。
通俗解释就是:
iPhone;U; 早期版本的iOS
iPhone; 现役版本的iOS
苹果公司在 2011 年年末发布的 iPhone4s 自带 iOS5 ,所以带「 iPhone;U;」字样的设备最高的型号也只是 iPhone4( iPad 2 或者过时的iPod Touch 4 ) 。
而今 iOS 已经经历了多个版本的迭代,并且根据公开数据显示,截止 2016 年 7 月,iOS9 占 86% ,iOS8 占 11% ,余下更早版本的所有占 3% 。这里面又有多少是 iOS4 呢?
在发现了一批欺诈订单都具有这个特点之后,我们不禁想到:
2016 年在线购物的人,还会用着过时的 iOS4 系统吗?
最大的可能性,就是“某些人”用着一批被市场淘汰的设备,发挥它的“剩余价值”。在被风控业务人员发现之前,这么做,其实也不算太笨。
一个值得思考的扩展问题
问:UserAgent 能够被修改吗?
答:可以。主流浏览器有专门修改 UserAgent 的插件,并且网络上也流传着各种修改的方法。但是所有的修改,也只是在一个现有的 UA 库里选择,并不能做到真正意义上的自定义。