mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-02 20:02:49 +08:00
add Browser
This commit is contained in:
parent
c1c862dda7
commit
bcd8d104fb
@ -11,6 +11,7 @@
|
||||
* 【core 】 改进Base64.isBase64方法增加等号判断(issue#1710@Github)
|
||||
* 【core 】 Sftp增加syncUpload方法(pr#375@Gitee)
|
||||
* 【core 】 改进NetUtil.getLocalHost逻辑(issue#1717@Github)
|
||||
* 【core 】 UseragentUtil增加QQ、alipay、taobao、uc等浏览器识别支持(issue#1719@Github)
|
||||
|
||||
### 🐞Bug修复
|
||||
|
||||
|
@ -28,6 +28,24 @@ public class Browser extends UserAgentInfo {
|
||||
* 支持的浏览器类型
|
||||
*/
|
||||
public static final List<Browser> browers = CollUtil.newArrayList(
|
||||
// 部分特殊浏览器是基于安卓、Iphone等的,需要优先判断
|
||||
// 企业微信 企业微信使用微信浏览器内核,会包含 MicroMessenger 所以要放在前面
|
||||
new Browser("wxwork", "wxwork", "wxwork\\/([\\d\\w\\.\\-]+)"),
|
||||
// 微信
|
||||
new Browser("MicroMessenger", "MicroMessenger", "MicroMessenger\\/([\\d\\w\\.\\-]+)"),
|
||||
// 微信小程序
|
||||
new Browser("miniProgram", "miniProgram", "miniProgram\\/([\\d\\w\\.\\-]+)"),
|
||||
// QQ浏览器
|
||||
new Browser("QQBrowser", "MQQBrowser", "MQQBrowser\\/([\\d\\w\\.\\-]+)"),
|
||||
// 钉钉内置浏览器
|
||||
new Browser("DingTalk", "DingTalk", "AliApp\\(DingTalk\\/([\\d\\w\\.\\-]+)\\)"),
|
||||
// 支付宝内置浏览器
|
||||
new Browser("Alipay", "AlipayClient", "AliApp\\(AP\\/([\\d\\w\\.\\-]+)\\)"),
|
||||
// 淘宝内置浏览器
|
||||
new Browser("Taobao", "taobao", "AliApp\\(TB\\/([\\d\\w\\.\\-]+)\\)"),
|
||||
// UC浏览器
|
||||
new Browser("UCBrowser", "UCBrowser", "UCBrowser\\/([\\d\\w\\.\\-]+)"),
|
||||
|
||||
new Browser("MSEdge", "Edge|Edg", "(?:edge|Edg)\\/([\\d\\w\\.\\-]+)"),
|
||||
new Browser("Chrome", "chrome", "chrome\\/([\\d\\w\\.\\-]+)"),
|
||||
new Browser("Firefox", "firefox", Other_Version),
|
||||
@ -50,15 +68,7 @@ public class Browser extends UserAgentInfo {
|
||||
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("miniProgram", "miniProgram", "miniProgram\\/([\\d\\w\\.\\-]+)"),
|
||||
// 钉钉
|
||||
new Browser("DingTalk", "DingTalk", "AliApp\\(DingTalk\\/([\\d\\w\\.\\-]+)\\)")
|
||||
new Browser("BlackBerry", "BlackBerry", "BlackBerry[\\d]+\\/([\\d\\w\\.\\-]+)")
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -233,6 +233,20 @@ public class UserAgentUtilTest {
|
||||
Assert.assertTrue(ua.isMobile());
|
||||
}
|
||||
|
||||
@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);
|
||||
Assert.assertEquals("QQBrowser", ua.getBrowser().toString());
|
||||
Assert.assertEquals("26", ua.getVersion());
|
||||
Assert.assertEquals("Webkit", ua.getEngine().toString());
|
||||
Assert.assertEquals("533.1", ua.getEngineVersion());
|
||||
Assert.assertEquals("Android", ua.getOs().toString());
|
||||
Assert.assertEquals("2.3.7", ua.getOsVersion());
|
||||
Assert.assertEquals("Android", 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";
|
||||
@ -246,4 +260,46 @@ public class UserAgentUtilTest {
|
||||
Assert.assertEquals("iPhone", ua.getPlatform().toString());
|
||||
Assert.assertTrue(ua.isMobile());
|
||||
}
|
||||
|
||||
@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);
|
||||
Assert.assertEquals("Alipay", ua.getBrowser().toString());
|
||||
Assert.assertEquals("10.0.18.062203", ua.getVersion());
|
||||
Assert.assertEquals("Webkit", ua.getEngine().toString());
|
||||
Assert.assertEquals("537.36", ua.getEngineVersion());
|
||||
Assert.assertEquals("Android", ua.getOs().toString());
|
||||
Assert.assertEquals("7.0", ua.getOsVersion());
|
||||
Assert.assertEquals("Android", ua.getPlatform().toString());
|
||||
Assert.assertTrue(ua.isMobile());
|
||||
}
|
||||
|
||||
@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);
|
||||
Assert.assertEquals("Taobao", ua.getBrowser().toString());
|
||||
Assert.assertEquals("4.9.2", ua.getVersion());
|
||||
Assert.assertEquals("Webkit", ua.getEngine().toString());
|
||||
Assert.assertEquals("537.36", ua.getEngineVersion());
|
||||
Assert.assertEquals("Android", ua.getOs().toString());
|
||||
Assert.assertEquals("4.4.4", ua.getOsVersion());
|
||||
Assert.assertEquals("Android", ua.getPlatform().toString());
|
||||
Assert.assertTrue(ua.isMobile());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseUCTest() {
|
||||
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);
|
||||
Assert.assertEquals("UCBrowser", ua.getBrowser().toString());
|
||||
Assert.assertEquals("11.3.8.909", ua.getVersion());
|
||||
Assert.assertEquals("Webkit", ua.getEngine().toString());
|
||||
Assert.assertEquals("537.36", ua.getEngineVersion());
|
||||
Assert.assertEquals("Android", ua.getOs().toString());
|
||||
Assert.assertEquals("7.0", ua.getOsVersion());
|
||||
Assert.assertEquals("Android", ua.getPlatform().toString());
|
||||
Assert.assertTrue(ua.isMobile());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user