From a61796de8f8f7143fd0e6acacdf6edb107ba90bc Mon Sep 17 00:00:00 2001 From: xyz327 Date: Thu, 22 Oct 2020 18:07:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(hutool-http):=20user-agent=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1=E5=92=8C=E9=92=89?= =?UTF-8?q?=E9=92=89.=20=E5=8E=BB=E9=99=A4=20Browser=20=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E8=A1=8C=E5=B0=BE=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/http/useragent/Browser.java | 55 ++++++++++--------- .../cn/hutool/http/test/HttpUtilTest.java | 11 ++++ .../http/useragent/UserAgentUtilTest.java | 26 +++++++++ 3 files changed, 67 insertions(+), 25 deletions(-) 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 bc1510d20..1b4cf74c7 100644 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/Browser.java @@ -22,31 +22,36 @@ public class Browser extends UserAgentInfo { /** * 支持的浏览器类型 */ - public static final List browers = CollUtil.newArrayList(// - new Browser("MSEdge", "Edge|Edg", "(?:edge|Edg)\\/([\\d\\w\\.\\-]+)"), // - new Browser("Chrome", "chrome", "chrome\\/([\\d\\w\\.\\-]+)"), // - new Browser("Firefox", "firefox", Other_Version), // - new Browser("IEMobile", "iemobile", Other_Version), // - new Browser("Android Browser", "android", "version\\/([\\d\\w\\.\\-]+)"), // - new Browser("Safari", "safari", "version\\/([\\d\\w\\.\\-]+)"), // - new Browser("Opera", "opera", Other_Version), // - new Browser("Konqueror", "konqueror", Other_Version), // - new Browser("PS3", "playstation 3", "([\\d\\w\\.\\-]+)\\)\\s*$"), // - new Browser("PSP", "playstation portable", "([\\d\\w\\.\\-]+)\\)?\\s*$"), // - new Browser("Lotus", "lotus.notes", "Lotus-Notes\\/([\\w.]+)"), // - new Browser("Thunderbird", "thunderbird", Other_Version), // - new Browser("Netscape", "netscape", Other_Version), // - new Browser("Seamonkey", "seamonkey", Other_Version), // - new Browser("Outlook", "microsoft.outlook", Other_Version), // - new Browser("Evolution", "evolution", Other_Version), // - new Browser("MSIE", "msie", "msie ([\\d\\w\\.\\-]+)"), // - new Browser("MSIE11", "rv:11", "rv:([\\d\\w\\.\\-]+)"), // - new Browser("Gabble", "Gabble", "Gabble\\/([\\d\\w\\.\\-]+)"), // - new Browser("Yammer Desktop", "AdobeAir", "([\\d\\w\\.\\-]+)\\/Yammer"), // - new Browser("Yammer Mobile", "Yammer[\\s]+([\\d\\w\\.\\-]+)", "Yammer[\\s]+([\\d\\w\\.\\-]+)"), // - new Browser("Apache HTTP Client", "Apache\\\\-HttpClient", "Apache\\-HttpClient\\/([\\d\\w\\.\\-]+)"), // - new Browser("BlackBerry", "BlackBerry", "BlackBerry[\\d]+\\/([\\d\\w\\.\\-]+)"),// - new Browser("MicroMessenger", "MicroMessenger", "MicroMessenger\\/([\\d\\w\\.\\-]+)")// + public static final List browers = CollUtil.newArrayList( + new Browser("MSEdge", "Edge|Edg", "(?:edge|Edg)\\/([\\d\\w\\.\\-]+)"), + new Browser("Chrome", "chrome", "chrome\\/([\\d\\w\\.\\-]+)"), + new Browser("Firefox", "firefox", Other_Version), + new Browser("IEMobile", "iemobile", Other_Version), + new Browser("Android Browser", "android", "version\\/([\\d\\w\\.\\-]+)"), + new Browser("Safari", "safari", "version\\/([\\d\\w\\.\\-]+)"), + new Browser("Opera", "opera", Other_Version), + new Browser("Konqueror", "konqueror", Other_Version), + new Browser("PS3", "playstation 3", "([\\d\\w\\.\\-]+)\\)\\s*$"), + new Browser("PSP", "playstation portable", "([\\d\\w\\.\\-]+)\\)?\\s*$"), + new Browser("Lotus", "lotus.notes", "Lotus-Notes\\/([\\w.]+)"), + new Browser("Thunderbird", "thunderbird", Other_Version), + new Browser("Netscape", "netscape", Other_Version), + new Browser("Seamonkey", "seamonkey", Other_Version), + new Browser("Outlook", "microsoft.outlook", Other_Version), + new Browser("Evolution", "evolution", Other_Version), + new Browser("MSIE", "msie", "msie ([\\d\\w\\.\\-]+)"), + new Browser("MSIE11", "rv:11", "rv:([\\d\\w\\.\\-]+)"), + new Browser("Gabble", "Gabble", "Gabble\\/([\\d\\w\\.\\-]+)"), + new Browser("Yammer Desktop", "AdobeAir", "([\\d\\w\\.\\-]+)\\/Yammer"), + new Browser("Yammer Mobile", "Yammer[\\s]+([\\d\\w\\.\\-]+)", "Yammer[\\s]+([\\d\\w\\.\\-]+)"), + new Browser("Apache HTTP Client", "Apache\\\\-HttpClient", "Apache\\-HttpClient\\/([\\d\\w\\.\\-]+)"), + new Browser("BlackBerry", "BlackBerry", "BlackBerry[\\d]+\\/([\\d\\w\\.\\-]+)"), + // 企业微信 企业微信使用微信浏览器内核,会包含 MicroMessenger 所以要放在前面 + new Browser("wxwork", "wxwork", "wxwork\\/([\\d\\w\\.\\-]+)"), + // 微信 + new Browser("MicroMessenger", "MicroMessenger", "MicroMessenger\\/([\\d\\w\\.\\-]+)"), + // 钉钉 + new Browser("DingTalk", "DingTalk", "AliApp\\(DingTalk\\/([\\d\\w\\.\\-]+)\\)") ); private Pattern versionPattern; diff --git a/hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java b/hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java index 201605cae..ee23728d7 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java @@ -4,19 +4,30 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.ReUtil; +import cn.hutool.core.util.ZipUtil; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; +import lombok.SneakyThrows; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import java.io.ByteArrayOutputStream; +import java.io.File; +import java.net.URL; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class HttpUtilTest { + @Test + public void utlTest() { + File file = new File("/Users/Downloads/test"); + File zipFile = new File(file, "demo.zip"); + HttpUtil.downloadFile("http://192.168.6.106:8000/demo.zip", file); + ZipUtil.unzip(zipFile); + } @Test @Ignore 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 4912c3ba5..dc5095418 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 @@ -204,4 +204,30 @@ public class UserAgentUtilTest { Assert.assertEquals("iPhone", ua.getPlatform().toString()); Assert.assertTrue(ua.isMobile()); } + + @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); + Assert.assertEquals("wxwork", ua.getBrowser().toString()); + Assert.assertEquals("3.0.31", ua.getVersion()); + Assert.assertEquals("Webkit", ua.getEngine().toString()); + Assert.assertEquals("605.1.15", ua.getEngineVersion()); + Assert.assertEquals("iPhone", ua.getOs().toString()); + Assert.assertEquals("iPhone", ua.getPlatform().toString()); + Assert.assertTrue(ua.isMobile()); + } + + @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); + Assert.assertEquals("DingTalk", ua.getBrowser().toString()); + Assert.assertEquals("5.1.33", ua.getVersion()); + Assert.assertEquals("Webkit", ua.getEngine().toString()); + Assert.assertEquals("605.1.15", ua.getEngineVersion()); + Assert.assertEquals("iPhone", ua.getOs().toString()); + Assert.assertEquals("iPhone", ua.getPlatform().toString()); + Assert.assertTrue(ua.isMobile()); + } }