From 28430e034031a724cf0ec3bfe6179833fda1b6fc Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 12 Nov 2022 20:37:22 +0800 Subject: [PATCH] =?UTF-8?q?UserAgentUtil=E5=A2=9E=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E9=92=89=E9=92=89PC=E7=AB=AF=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../cn/hutool/http/useragent/Browser.java | 2 + .../hutool/http/useragent/UserAgentInfo.java | 3 + .../http/useragent/UserAgentUtilTest.java | 122 ++++++++++-------- 4 files changed, 74 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 340bc4417..0c8301322 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * 【core 】 去除ClassloaderUtil的Cache(issue#I5YWI6@Gitee) * 【core 】 ClassScanner 增加忽略加载错误类的扫描方法(pr#855@Gitee) * 【core 】 DateUtil和LocalDateTimeUtil添加区间退化为点,点与区间,点与点之间关系判断。(pr#2725@Github) +* 【http 】 UserAgentUtil增加对钉钉PC端的支持(issue#I60UOP@Gitee) ### 🐞Bug修复 * 【db 】 修复分页时order by截断问题(issue#I5X6FM@Gitee) diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java b/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java index 42ce32370..3ebbd0d62 100755 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java @@ -37,6 +37,8 @@ public class Browser extends UserAgentInfo { new Browser("miniProgram", "miniProgram", Other_Version), // QQ浏览器 new Browser("QQBrowser", "MQQBrowser", "MQQBrowser\\/([\\d\\w\\.\\-]+)"), + // 钉钉PC端浏览器 + new Browser("DingTalk-win", "dingtalk-win", "DingTalk\\(([\\d\\w\\.\\-]+)\\)"), // 钉钉内置浏览器 new Browser("DingTalk", "DingTalk", "AliApp\\(DingTalk\\/([\\d\\w\\.\\-]+)\\)"), // 支付宝内置浏览器 diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentInfo.java b/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentInfo.java index c77ccbb8b..217c61e51 100755 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentInfo.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentInfo.java @@ -14,6 +14,9 @@ import java.util.regex.Pattern; public class UserAgentInfo implements Serializable { private static final long serialVersionUID = 1L; + /** + * 未知类型 + */ public static final String NameUnknown = "Unknown"; /** 信息名称 */ diff --git a/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java b/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java index 650e3a7d6..21047c802 100644 --- a/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/useragent/UserAgentUtilTest.java @@ -7,9 +7,9 @@ public class UserAgentUtilTest { @Test public void parseDesktopTest() { - String uaStr = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"; + final String uaStr = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("Chrome", ua.getBrowser().toString()); Assert.assertEquals("14.0.835.163", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -22,9 +22,9 @@ public class UserAgentUtilTest { @Test public void parseMobileTest() { - String uaStr = "User-Agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"; + final String uaStr = "User-Agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("Safari", ua.getBrowser().toString()); Assert.assertEquals("5.0.2", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -37,8 +37,8 @@ public class UserAgentUtilTest { @Test public void parseMiui10WithChromeTest() { - String uaStr = "Mozilla/5.0 (Linux; Android 9; MIX 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Linux; Android 9; MIX 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("Chrome", ua.getBrowser().toString()); Assert.assertEquals("70.0.3538.80", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -51,8 +51,8 @@ public class UserAgentUtilTest { @Test public void parseHuaweiPhoneWithNativeBrowserTest() { - String uaString = "Mozilla/5.0 (Linux; Android 10; EML-AL00 Build/HUAWEIEML-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (Linux; Android 10; EML-AL00 Build/HUAWEIEML-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("Android Browser", ua.getBrowser().toString()); Assert.assertEquals("4.0", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -65,8 +65,8 @@ public class UserAgentUtilTest { @Test public void parseSamsungPhoneWithNativeBrowserTest() { - String uaString = "Dalvik/2.1.0 (Linux; U; Android 9; SM-G950U Build/PPR1.180610.011)"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Dalvik/2.1.0 (Linux; U; Android 9; SM-G950U Build/PPR1.180610.011)"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("Android Browser", ua.getBrowser().toString()); Assert.assertNull(ua.getVersion()); Assert.assertEquals("Unknown", ua.getEngine().toString()); @@ -79,8 +79,8 @@ public class UserAgentUtilTest { @Test public void parseWindows10WithChromeTest() { - String uaStr = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("Chrome", ua.getBrowser().toString()); Assert.assertEquals("70.0.3538.102", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -93,8 +93,8 @@ public class UserAgentUtilTest { @Test public void parseWindows10WithIe11Test() { - String uaStr = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MSIE11", ua.getBrowser().toString()); Assert.assertEquals("11.0", ua.getVersion()); Assert.assertEquals("Trident", ua.getEngine().toString()); @@ -107,8 +107,8 @@ public class UserAgentUtilTest { @Test public void parseWindows10WithIeMobileLumia520Test() { - String uaStr = "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537 "; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537 "; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("IEMobile", ua.getBrowser().toString()); Assert.assertEquals("11.0", ua.getVersion()); Assert.assertEquals("Trident", ua.getEngine().toString()); @@ -121,8 +121,8 @@ public class UserAgentUtilTest { @Test public void parseWindows10WithIe8EmulatorTest() { - String uaStr = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MSIE", ua.getBrowser().toString()); Assert.assertEquals("8.0", ua.getVersion()); Assert.assertEquals("Trident", ua.getEngine().toString()); @@ -135,8 +135,8 @@ public class UserAgentUtilTest { @Test public void parseWindows10WithEdgeTest() { - String uaStr = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MSEdge", ua.getBrowser().toString()); Assert.assertEquals("18.17763", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -149,8 +149,8 @@ public class UserAgentUtilTest { @Test public void parseEdgeOnLumia950XLTest() { - String uaStr = "Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; Lumia 950XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36 Edge/15.14900"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; Lumia 950XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36 Edge/15.14900"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MSEdge", ua.getBrowser().toString()); Assert.assertEquals("15.14900", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -163,8 +163,8 @@ public class UserAgentUtilTest { @Test public void parseChromeOnWindowsServer2012R2Test() { - String uaStr = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("Chrome", ua.getBrowser().toString()); Assert.assertEquals("63.0.3239.132", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -177,8 +177,8 @@ public class UserAgentUtilTest { @Test public void parseIE11OnWindowsServer2008R2Test() { - String uaStr = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MSIE11", ua.getBrowser().toString()); Assert.assertEquals("11.0", ua.getVersion()); Assert.assertEquals("Trident", ua.getEngine().toString()); @@ -191,8 +191,8 @@ public class UserAgentUtilTest { @Test public void parseEdgeTest() { - String uaStr = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.69 Safari/537.36 Edg/81.0.416.34"; - UserAgent ua = UserAgentUtil.parse(uaStr); + final String uaStr = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.69 Safari/537.36 Edg/81.0.416.34"; + final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MSEdge", ua.getBrowser().toString()); Assert.assertEquals("81.0.416.34", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -208,8 +208,8 @@ public class UserAgentUtilTest { */ @Test public void parseMicroMessengerTest() { - String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/7.0.17(0x17001127) NetType/WIFI Language/zh_CN"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/7.0.17(0x17001127) NetType/WIFI Language/zh_CN"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("MicroMessenger", ua.getBrowser().toString()); Assert.assertEquals("7.0.17", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -222,8 +222,8 @@ public class UserAgentUtilTest { @Test public void parseWorkWxTest() { - String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 wxwork/3.0.31 MicroMessenger/7.0.1 Language/zh"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 wxwork/3.0.31 MicroMessenger/7.0.1 Language/zh"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("wxwork", ua.getBrowser().toString()); Assert.assertEquals("3.0.31", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -235,8 +235,8 @@ public class UserAgentUtilTest { @Test public void parseQQTest() { - String uaString = "User-Agent: MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "User-Agent: MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("QQBrowser", ua.getBrowser().toString()); Assert.assertEquals("26", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -249,8 +249,8 @@ public class UserAgentUtilTest { @Test public void parseDingTalkTest() { - String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18A373 AliApp(DingTalk/5.1.33) com.laiwang.DingTalk/13976299 Channel/201200 language/zh-Hans-CN WK"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18A373 AliApp(DingTalk/5.1.33) com.laiwang.DingTalk/13976299 Channel/201200 language/zh-Hans-CN WK"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("DingTalk", ua.getBrowser().toString()); Assert.assertEquals("5.1.33", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -263,8 +263,8 @@ public class UserAgentUtilTest { @Test public void parseAlipayTest() { - String uaString = "Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; FRD-AL00 Build/HUAWEIFRD-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.3.8.909 UWS/2.10.2.5 Mobile Safari/537.36 UCBS/2.10.2.5 Nebula AlipayDefined(nt:WIFI,ws:360|0|3.0) AliApp(AP/10.0.18.062203) AlipayClient/10.0.18.062203 Language/zh-Hans useStatusBar/true"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; FRD-AL00 Build/HUAWEIFRD-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.3.8.909 UWS/2.10.2.5 Mobile Safari/537.36 UCBS/2.10.2.5 Nebula AlipayDefined(nt:WIFI,ws:360|0|3.0) AliApp(AP/10.0.18.062203) AlipayClient/10.0.18.062203 Language/zh-Hans useStatusBar/true"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("Alipay", ua.getBrowser().toString()); Assert.assertEquals("10.0.18.062203", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -277,8 +277,8 @@ public class UserAgentUtilTest { @Test public void parseTaobaoTest() { - String uaString = "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI 2C Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 AliApp(TB/4.9.2) WindVane/5.2.2 TBANDROID/700342@taobao_android_4.9.2 720X1280"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI 2C Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 AliApp(TB/4.9.2) WindVane/5.2.2 TBANDROID/700342@taobao_android_4.9.2 720X1280"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("Taobao", ua.getBrowser().toString()); Assert.assertEquals("4.9.2", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -291,8 +291,8 @@ public class UserAgentUtilTest { @Test public void parseUCTest() { - String uaString = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("UCBrowser", ua.getBrowser().toString()); Assert.assertEquals("4.0.3214.0", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -305,8 +305,8 @@ public class UserAgentUtilTest { @Test public void parseUCTest2() { - String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/16G102 UCBrowser/12.7.6.1251 Mobile AliApp(TUnionSDK/0.1.20.3)"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/16G102 UCBrowser/12.7.6.1251 Mobile AliApp(TUnionSDK/0.1.20.3)"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("UCBrowser", ua.getBrowser().toString()); Assert.assertEquals("12.7.6.1251", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -319,8 +319,8 @@ public class UserAgentUtilTest { @Test public void parseQuarkTest() { - String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X; zh-cn) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/16G102 Quark/3.6.2.993 Mobile"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X; zh-cn) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/16G102 Quark/3.6.2.993 Mobile"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("Quark", ua.getBrowser().toString()); Assert.assertEquals("3.6.2.993", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -333,8 +333,8 @@ public class UserAgentUtilTest { @Test public void parseWxworkTest() { - String uaString = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1326.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 wxwork/3.1.10 (MicroMessenger/6.2) WindowsWechat"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1326.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 wxwork/3.1.10 (MicroMessenger/6.2) WindowsWechat"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("wxwork", ua.getBrowser().toString()); Assert.assertEquals("3.1.10", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -347,8 +347,8 @@ public class UserAgentUtilTest { @Test public void parseWxworkMobileTest() { - String uaString = "Mozilla/5.0 (Linux; Android 10; JSN-AL00 Build/HONORJSN-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045710 Mobile Safari/537.36 wxwork/3.1.10 ColorScheme/Light MicroMessenger/7.0.1 NetType/WIFI Language/zh Lang/zh"; - UserAgent ua = UserAgentUtil.parse(uaString); + final String uaString = "Mozilla/5.0 (Linux; Android 10; JSN-AL00 Build/HONORJSN-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045710 Mobile Safari/537.36 wxwork/3.1.10 ColorScheme/Light MicroMessenger/7.0.1 NetType/WIFI Language/zh Lang/zh"; + final UserAgent ua = UserAgentUtil.parse(uaString); Assert.assertEquals("wxwork", ua.getBrowser().toString()); Assert.assertEquals("3.1.10", ua.getVersion()); Assert.assertEquals("Webkit", ua.getEngine().toString()); @@ -362,7 +362,7 @@ public class UserAgentUtilTest { @Test public void parseEdgATest(){ // https://gitee.com/dromara/hutool/issues/I4MCBP - String uaStr = "userAgent: Mozilla/5.0 (Linux; Android 11; MI 9 Transparent Edition) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Mobile Safari/537.36 EdgA/96.0.1054.36"; + final String uaStr = "userAgent: Mozilla/5.0 (Linux; Android 11; MI 9 Transparent Edition) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Mobile Safari/537.36 EdgA/96.0.1054.36"; final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MSEdge", ua.getBrowser().toString()); Assert.assertEquals("96.0.1054.36", ua.getVersion()); @@ -377,7 +377,7 @@ public class UserAgentUtilTest { @Test public void parseLenovoTest(){ // https://gitee.com/dromara/hutool/issues/I4QBMD - String uaStr = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/30"; + final String uaStr = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/30"; final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("Lenovo", ua.getBrowser().toString()); @@ -392,7 +392,7 @@ public class UserAgentUtilTest { @Test public void parseXiaoMiTest(){ - String uaStr = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/89.0.4389.116 Safari/534.24 XiaoMi/MiuiBrowser/16.0.18 swan-mibrowser"; + final String uaStr = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/89.0.4389.116 Safari/534.24 XiaoMi/MiuiBrowser/16.0.18 swan-mibrowser"; final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("MiuiBrowser", ua.getBrowser().toString()); @@ -408,8 +408,22 @@ public class UserAgentUtilTest { @Test public void parseFromDeepinTest(){ // https://gitee.com/dromara/hutool/issues/I50YGY - String uaStr = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"; + final String uaStr = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"; final UserAgent ua = UserAgentUtil.parse(uaStr); Assert.assertEquals("Linux", ua.getOs().toString()); } + + @Test + public void issueI60UOPTest() { + final String uaStr = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36 dingtalk-win/1.0.0 nw(0.14.7) DingTalk(6.5.40-Release.9059101) Mojo/1.0.0 Native AppType(release) Channel/201200"; + final UserAgent ua = UserAgentUtil.parse(uaStr); + Assert.assertEquals("DingTalk-win", ua.getBrowser().toString()); + Assert.assertEquals("6.5.40-Release.9059101", ua.getVersion()); + Assert.assertEquals("Webkit", ua.getEngine().toString()); + Assert.assertEquals("537.36", ua.getEngineVersion()); + Assert.assertEquals("Windows 10 or Windows Server 2016", ua.getOs().toString()); + Assert.assertEquals("10.0", ua.getOsVersion()); + Assert.assertEquals("Windows", ua.getPlatform().toString()); + Assert.assertFalse(ua.isMobile()); + } }