Java通过浏览器请求头(User-Agent)获取 浏览器类型,操作系统类型,手机机型

来源:互联网 发布:js实例子 编辑:程序博客网 时间:2024/05/21 02:34
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。

一:获得浏览器请求头中的User-Agent

?
1
String ua = request.getHeader("User-Agent")

二:获得浏览器类型,操作系统类型:(注意,UserAgent类在UserAgentUtils.jar中,自行下载)

?
1
2
3
UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent")); 
       Browser browser = userAgent.getBrowser(); 
       OperatingSystem os = userAgent.getOperatingSystem();

三:获得手机类型:


方案一:正则表达式

通过观察规律,得出以下表达式:

?
1
;\s?([^;]+?)\s?(Build)?/

Java代码:


?
1
2
3
4
5
6
7
Pattern pattern = Pattern.compile(";\\s?(\\S*?\\s?\\S*?)\\s?(Build)?/"); 
            Matcher matcher = pattern.matcher(userAgent); 
            String model = null
            if(matcher.find()) { 
                model = matcher.group(1).trim(); 
                log.debug("通过userAgent解析出机型:"+ model); 
            }

以下为部分UserAgent,供测试,可以直接在EditPlus里验证。


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
     
Mozilla/5.0(Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30
Mozilla/5.0(Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30V1_AND_SQ_5.0.0_146_YYB_D QQ/5.0.0.2215
Mozilla/5.0(Linux; U; Android 4.3; zh-cn; SM-N9009 Build/JSS15J) AppleWebKit/537.36(KHTML, like Gecko)Version/4.0MQQBrowser/5.3Mobile Safari/537.36
Mozilla/5.0(Linux; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/535.19(KHTML, like Gecko) Version/1.0Chrome/18.0.1025.308Mobile Safari/535.19
Mozilla/5.0(Linux; U; Android 4.3; zh-CN; SM-N9009 Build/JSS15J) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.9.2.467U3/0.8.0Mobile Safari/533.1
Mozilla/5.0(Linux; U; Android 4.1.2; zh-CN; Coolpad 5891Build/JZO54K) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.9.3.478U3/0.8.0Mobile Safari/533.1
Mozilla/5.0(Linux; U; Android 4.1.2; zh-cn; Coolpad 5891Build/JZO54K) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30V1_AND_SQ_5.0.0_146_YYB2_D QQ/5.0.0.2215
Mozilla/5.0(iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1(KHTML, like Gecko) Version/7.0Mobile/11B554a Safari/9537.53
Mozilla/5.0(iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2(KHTML, like Gecko) Mobile/11D257 QQ/5.0.0.165
Mozilla/5.0(Linux; Android 4.3; zh-cn; SAMSUNG-GT-I9308_TD/1.0Android/4.3Release/11.15.2013Browser/AppleWebKit534.30Build/JSS15J) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30
Mozilla/5.0(Linux; U; Android 4.1.1; zh-cn; GT-N7100 Build/JRO03C) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30SogouMSE,SogouMobileBrowser/3.2.3
Mozilla/5.0(Linux; U; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/534.24(KHTML, like Gecko) Version/4.0Mobile Safari/534.24T5/2.0baidubrowser/5.0.3.10(Baidu; P1 4.2.2)
Mozilla/5.0(Linux; U; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/534.24(KHTML, like Gecko) Version/4.0Mobile Safari/534.24T5/2.0
Mozilla/5.0(Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36(KHTML, like Gecko) Chrome/37.0.2062.117Mobile Safari/537.36OPR/24.0.1565.82529
Mozilla/5.0(Linux; U; Android 4.4.4; zh-CN; Nexus 4Build/KTU84P) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.9.2.467U3/0.8.0Mobile Safari/533.1
Mozilla/5.0(Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/534.24(KHTML, like Gecko) Version/4.0Mobile Safari/534.24T5/2.0baidubrowser/5.2.3.0(Baidu; P1 4.0.4)
Mozilla/5.0(Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/537.36(KHTML, like Gecko)Version/4.0MQQBrowser/5.3Mobile Safari/537.36
Mozilla/5.0(Linux; Android 4.0.4; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/537.36(KHTML, like Gecko) Chrome/37.0.2062.117Mobile Safari/537.36
Mozilla/5.0(Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/535.19(KHTML, like Gecko) Version/4.0LieBaoFast/2.12.0Mobile Safari/535.19
Opera/9.80(Android; Opera Mini/7.0.31907/34.2499; U; zh) Presto/2.8.119Version/11.10 
Mozilla/5.0(Linux; U; Android 4.0.4; zh-cn; HW-HUAWEI_C8825D/C8825DV100R001C92B943SP01; 480*800; CTC/2.0) AppleWebKit/534.30Mobile Safari/534.30
Mozilla/5.0(Linux; U; Android 4.4.2; zh-CN; SGP521 Build/17.1.2.A.0.314) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.9.2.467U3/0.8.0Mobile Safari/533.1
Mozilla/5.0(Linux; Android 4.4.2; SGP521 Build/17.1.2.A.0.314) AppleWebKit/537.36(KHTML, like Gecko) Chrome/37.0.2062.117Safari/537.36
Mozilla/5.0(Linux; U; Android 4.0.4; zh-CN; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.8.5.442U3/0.8.0Mobile Safari/533.1
Mozilla/5.0(Linux; U; Android 4.1.1; zh-cn; GT-N7100 Build/JRO03C) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30
Mozilla/5.0(Linux; Android 4.4.2; zh-cn; SAMSUNG-SM-N9009 Build/KOT49H) AppleWebKit/537.36(KHTML, like Gecko) Version/1.5Chrome/28.0.1500.94Mobile Safari/537.36
Mozilla/5.0(Linux; U; Android 4.2.2; zh-CN; HTC HTL22 Build/JDQ39) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.9.2.467U3/0.8.0Mobile Safari/533.1 
Mozilla/5.0(Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36(KHTML, like Gecko) Chrome/37.0.2062.117Mobile Safari/537.36
Mozilla/5.0(Linux; U; Android 4.2.1; zh-cn; AMOI A920W Build/JOP40D) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30  
Mozilla/5.0(Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36(KHTML, like Gecko) Chrome/36.0.1985.135Mobile Safari/537.36
Mozilla/5.0(Linux; U; Android 4.1.1; zh-CN; GT-N7100 Build/JRO03C) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.9.2.467U3/0.8.0Mobile Safari/533.1
Mozilla/5.0(Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30
Huawei U8800    Android 2.3.3  Baidu 2.2  Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn) AppleWebKit/530.17(KHTML, like Gecko) FlyFlow/2.2Version/4.0Mobile Safari/530.17       有用(0)
Huawei U8800    Android 2.3.3  UC 8.7 Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) UC AppleWebKit/534.31(KHTML, like Gecko) Mobile Safari/534.31       有用(0)
Meizu MX M031   Android 4.0.3  Chrome 18  Mozilla/5.0(Linux; Android 4.0.3; M031 Build/IML74K) AppleWebKit/535.19(KHTML, like Gecko) Chrome/18.0.1025.166Mobile Safari/535.19     有用(0)
Meizu MX M031   Android 4.0.3  Opera 12.1 Opera/9.80(Android 4.0.3; Linux; Opera Mobi/ADR-1210241511) Presto/2.11.355Version/12.10     有用(0)
Meizu MX M031   Android 4.0.3  -built-in *     Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30        有用(0)
Meizu MX M031   Android 4.0.3  Baidu 2.2  Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn) AppleWebKit/530.17(KHTML, like Gecko) FlyFlow/2.2Version/4.0Mobile Safari/530.17       有用(0)
Meizu MX M031   Android 4.0.3  UC 8.7 Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) UC AppleWebKit/534.31(KHTML, like Gecko) Mobile Safari/534.31     有用(0)
Meizu M9    Android 4.0.3  QQ 3.7 MQQBrowser/3.7/Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30   Normal Mode     有用(0)
Meizu M9    Android 4.0.3  QQ 3.5 MQQBrowser/3.5/Adr (Linux; U; 4.0.3; zh-cn; M9 Build/Flyme 1.0.1;640*960)   Speed Mode  有用(0)
Meizu M9    Android 4.0.3  -built-in *     Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30      有用(0)
Meizu M9    Android 4.0.3  QQ 3.5 MQQBrowser/3.5/Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30   Normal Mode     有用(0)
Meizu MX M031   Android 4.0.3  Maxthon 2.7    Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30        有用(0)
Huawei U8800    Android 2.3.3  Maxthon 2.7    Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0Mobile Safari/533.1        有用(0)
Huawei U8800    Android 2.3.3  QQ 3.7 MQQBrowser/3.7/Adr (Linux; U; 2.3.5; zh-cn; U8800 Build/U8800V100R001C00B528G002;480*800)   Speed Mode  有用(0)
Huawei U8800    Android 2.3.3  Dolphin 9.1    Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0Mobile Safari/533.1        有用(0)
Huawei U8800    Android 2.3.3  QQ 3.7 MQQBrowser/3.7/Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0Mobile Safari/533.1 Normal Mode     有用(0)
Huawei U8800    Android 2.3.3  -built-in *     Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0Mobile Safari/533.1
Samsung P6200(GALAXY Tab)   Android 3.2    -built-in *     Mozilla/5.0(Linux; U; Android 3.2; zh-cn; GT-P6200 Build/HTJ85B) AppleWebKit/534.13(KHTML, like Gecko) Version/4.0Safari/534.13     有用(0)
Huawei U8800    Android 2.3.3  Maxthon 4.0    Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0Mobile Safari/533.1        有用(0)
Meizu MX M031   Android 4.0.3  Baidu 2.3  Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/530.17(KHTML, like Gecko) FlyFlow/2.3Version/4.0Mobile Safari/530.17baidubrowser/023_1.41.3.2_diordna_069_046/uzieM_51_3.0.4_130M/1200a/963E77C7DAC3FA587DF3A7798517939D%7C408994110686468/1       有用(0)
Huawei U8800    Android 2.3.3  Baidu 2.3  Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/530.17(KHTML, like Gecko) FlyFlow/2.3Version/4.0Mobile Safari/530.17baidubrowser/042_1.6.3.2_diordna_008_084/IEWAUH_01_5.3.2_0088U/1001a/BE44DF7FABA8768B2A1B1E93C4BAD478%7C898293140340353/1        有用(0)
Huawei U8800    Android 2.3.3  Dolphin 9.2    Mozilla/5.0(Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0Mobile Safari/533.1        有用(0)
HTC S720e(One X)    Android 4.0.3  -built-in *     Mozilla/5.0(Linux; U; Android 4.0.4; zh-cn; HTC S720e Build/IMM76D) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30       有用(1)
HTC S720e(One X)    Android 4.0.3  UC 8.7 Mozilla/5.0(Linux; U; Android 4.0.4; zh-cn; HTC S720e Build/IMM76D) UC AppleWebKit/534.31(KHTML, like Gecko) Mobile Safari/534.31        有用(0)
Meizu MX M031   Android 4.0.3  Dolphin Min 2.3    Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30        有用(0)
Meizu MX M031   Android 4.0.3  QQ 4.0 MQQBrowser/4.0/Mozilla/5.0(Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/533.1(KHTML, like Gecko) Mobile Safari/533.1       有用(0)
Meizu M9    Android 4.0.3  QQ 3.7 MQQBrowser/3.7/Adr (Linux; U; 4.0.3; zh-cn; M9 Build/Flyme 1.0.1;640*960)
Meizu MX2 M040  Android 4.1    UC 9.4 Mozilla/5.0(Linux; U; Android 4.1.1; zh-CN; M040 Build/JRO03H) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0UCBrowser/9.4.1.362U3/0.8.0Mobile Safari/533.1     有用(0)
Meizu MX2 M040  Android 4.1    Chrome 31  Mozilla/5.0(Linux; Android 4.1.1; M040 Build/JRO03H) AppleWebKit/537.36(KHTML, like Gecko) Chrome/31.0.1650.59Mobile Safari/537.36      有用(0)
Meizu MX2 M040  Android 4.1    猎豹 2.8 Mozilla/5.0(Linux; Android 4.1.1; M040 Build/JRO03H) AppleWebKit/537.36(KHTML, like Gecko) Chrome/28.0.1500.64Mobile Safari/537.36      有用(0)
Meizu MX2 M040  Android 4.1    Baidu 4.1  Mozilla/5.0(Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/534.24(KHTML, like Gecko) Version/4.0Mobile Safari/534.24T5/2.0baidubrowser/4.2.4.0(Baidu; P1 4.1.1)       有用(0)
Meizu MX M031   Android 4.1    -built-in *     Mozilla/5.0(Linux; U; Android 4.1.1; zh-cn; M031 Build/JRO03H) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30        有用(1)
Meizu MX M031   Android 4.1    UC 8.8 Mozilla/5.0(Linux; U; Android 4.1.1; zh-CN; M031 Build/JRO03H) AppleWebKit/534.31(KHTML, like Gecko) UCBrowser/8.8.3.278U3/0.8.0Mobile Safari/534.31       有用(0)
Meizu MX2 M040  Android 4.1    QQ 4.1 Mozilla/5.0(Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/533.1(KHTML, like Gecko)Version/4.0MQQBrowser/4.1Mobile Safari/533.1        有用(0)
Meizu MX2 M040  Android 4.1    -built-in *     Mozilla/5.0(Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/534.30(KHTML, like Gecko) Version/4.0Mobile Safari/534.30        有用(2)
Samsung P6200(GALAXY Tab)   Android 3.2    QQ HD 2.1  Mozilla/5.0(Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16(KHTML, like Gecko) Version/5.0Safari/533.16      有用(0)
Samsung P6200(GALAXY Tab)   Android 3.2    UC HD 2.3  Mozilla/5.0(Macintosh; U; Intel Mac OS X 10_6_3) AppleWebKit/534.31(KHTML, like Gecko) Chrome/17.0.558.0Safari/534.31UCBrowser/2.3.1.257

通过验证,成功率95%以上。

方案二:开源类库WURFL

地址:http://wurfl.sourceforge.net/apis.php

在线测试地址:http://tools.scientiamobile.com

0 0
原创粉丝点击