From b9f7e062bc7f9a362b0f69d5534e1afc937d0218 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 6 Apr 2022 10:18:36 +0800 Subject: [PATCH] fix useragent --- CHANGELOG.md | 1 + .../src/main/java/cn/hutool/http/useragent/OS.java | 2 +- .../src/main/java/cn/hutool/http/useragent/Platform.java | 2 +- .../java/cn/hutool/http/useragent/UserAgentUtilTest.java | 8 ++++++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 514df0d3e..01595e7d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * 【core 】 CopyOptions支持以Lambda方式设置忽略属性列表(pr#590@Gitee) ### 🐞Bug修复 +* 【core 】 修复UserAgentUtil识别Linux出错(issue#I50YGY@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/OS.java b/hutool-http/src/main/java/cn/hutool/http/useragent/OS.java index d700a0f00..965d851d3 100644 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/OS.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/OS.java @@ -36,7 +36,7 @@ public class OS extends UserAgentInfo { new OS("Windows", "windows"), // new OS("OSX", "os x (\\d+)[._](\\d+)", "os x (\\d+([._]\\d+)*)"), // new OS("Android", "Android", "Android (\\d+([._]\\d+)*)"),// - new OS("Android", "\\(X\\d+; Linux", "\\(X(\\d+([._]\\d+)*)"),// + new OS("Android", "XiaoMi|MI\\s+", "\\(X(\\d+([._]\\d+)*)"),// new OS("Linux", "linux"), // new OS("Wii", "wii", "wii libnup/(\\d+([._]\\d+)*)"), // new OS("PS3", "playstation 3", "playstation 3; (\\d+([._]\\d+)*)"), // diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/Platform.java b/hutool-http/src/main/java/cn/hutool/http/useragent/Platform.java index e0deb08d4..960ee18f9 100644 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/Platform.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/Platform.java @@ -54,7 +54,7 @@ public class Platform extends UserAgentInfo { IPAD, // IPOD, // IPHONE, // - new Platform("Android", "XiaoMi|MI "), // + new Platform("Android", "XiaoMi|MI\\s+"), // ANDROID, // GOOGLE_TV, // new Platform("htcFlyer", "htc_flyer"), // 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 4423f6d4e..650e3a7d6 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 @@ -404,4 +404,12 @@ public class UserAgentUtilTest { Assert.assertEquals("Android", ua.getPlatform().toString()); Assert.assertTrue(ua.isMobile()); } + + @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 UserAgent ua = UserAgentUtil.parse(uaStr); + Assert.assertEquals("Linux", ua.getOs().toString()); + } }