一个比较全的ua识别工具类
本帖最后由 danran 于 2021-1-18 11:10 编辑最近做一些东西要用到,于是写了一个通过请求头ua识别 系统+浏览器的工具类,分享给大家,
有啥bug或者优化建议可以在下方留言,本人菜鸟,
发代码出来希望大家有对我代码啥好建议可以交流一下
有啥ua补充也可以留言
/**
* @AuThor Administrator
*/
public class VisitorUtils {
public static String getOs(String userAgent) {
if (userAgent.length() < 4) {
return "其他系统";
}
if (userAgent.contains("Windows")) {
if (userAgent.contains("Windows NT 10.0")) {
return "Windows 10";
} else if (userAgent.contains("Windows NT 6.2")) {
return "Windows 8";
} else if (userAgent.contains("Windows NT 6.1")) {
return "Windows 7";
} else if (userAgent.contains("Windows NT 6.0")) {
return "Windows Vista";
} else if (userAgent.contains("Windows NT 5.2")) {
return "Windows XP";
} else if (userAgent.contains("Windows NT 5.1")) {
return "Windows XP";
} else if (userAgent.contains("Windows NT 5.01")) {
return "Windows 2000";
} else if (userAgent.contains("Windows NT 5.0")) {
return "Windows 2000";
} else if (userAgent.contains("Windows NT 4.0")) {
return "Windows NT 4.0";
} else if (userAgent.contains("Windows 98; Win 9x 4.90")) {
return "Windows ME";
} else if (userAgent.contains("Windows 98")) {
return "Windows 98";
} else if (userAgent.contains("Windows 95")) {
return "Windows 95";
} else if (userAgent.contains("Windows CE")) {
return "Windows CE";
}
} else if (userAgent.contains("Mac OS X")) {
if (userAgent.contains("iPhone")) {
return "iPhone";
} else if (userAgent.contains("iPad")) {
return "iPad";//判断系统
} else {
return "Mac";//判断系统
}
} else if (userAgent.contains("Android")) {
return "Android";//判断系统
} else if (userAgent.contains("Linux")) {
return "Linux";//判断系统
} else if (userAgent.contains("FreeBSD")) {
return "FreeBSD";//判断系统
} else if (userAgent.contains("Solaris")) {
return "Solaris";//判断系统
}
return "其他系统";
}
public static String getBrowser(String userAgent) {
if (userAgent.length() < 4) {
return "其他浏览器";
}
if (userAgent.contains("Edge")) {
return "Microsoft Edge";
} else if (userAgent.contains("QQBrowser")) {
return "QQ浏览器";
} else if (userAgent.contains("Chrome") && userAgent.contains("Safari")) {
return "Chrome";
} else if (userAgent.contains("Firefox")) {
return "Firefox";
} else if (userAgent.contains("360")) {//Internet Explorer 6
return "360浏览器";
} else if (userAgent.contains("Opera")) {//Internet Explorer 6
return "Opera";
} else if (userAgent.contains("Safari") && !userAgent.contains("Chrome")) {
return "Safari";
} else if (userAgent.contains("Sogou")) {//Internet Explorer 6
return "搜狗浏览器";
} else if (userAgent.contains("TencentTraveler")) {//Internet Explorer 6
return "腾讯浏览器";
} else if (userAgent.contains("UC")) {//Internet Explorer 6
return "UC浏览器";
} else if (userAgent.contains("MicroMessenger/7")) {//Internet Explorer 6
return "微信访问";
} else if (userAgent.contains("TIM")) {//Internet Explorer 6
return "TIM访问";
} else if (userAgent.contains("QQ")) {//Internet Explorer 6
return "QQ访问";
} else if (userAgent.contains("Maxthon")) {//Internet Explorer 6
return "遨游浏览器";
} else if (userAgent.contains("Quark")) {//Internet Explorer 6
return "夸克浏览器";
} else if (userAgent.contains("Build")) {//Internet Explorer 6
return "百度浏览器";
} else if (userAgent.contains("2345")) {//Internet Explorer 6
return "2345浏览器";
} else if (userAgent.contains("Zeus")) {//Internet Explorer 6
return "宙斯浏览器";
} else if (userAgent.contains("LieBao")) {//Internet Explorer 6
return "猎豹浏览器";
} else if (userAgent.contains("Vivo")) {//Internet Explorer 6
return "vivo浏览器";
}else if (userAgent.contains("Tao")) {//Internet Explorer 6
return "淘宝浏览器";
} else if (userAgent.contains("Vivo")) {//Internet Explorer 6
return "vivo浏览器";
}
else if (userAgent.contains("MSIE")) {
if (userAgent.contains("MSIE 10.0")) {//Internet Explorer 10
return "IE 10";
} else if (userAgent.contains("MSIE 9.0")) {//Internet Explorer 9
return "IE 9";
} else if (userAgent.contains("MSIE 8.0")) {//Internet Explorer 8
return "IE 8";
} else if (userAgent.contains("MSIE 7.0")) {//Internet Explorer 7
return "IE 7";
} else if (userAgent.contains("MSIE 6.0")) {//Internet Explorer 6
return "IE 6";
}
}
return "其他浏览器";
}
}
你用一个数组或者map 扫一遍,扫到了直接返回不就行了。。。还套这么多判断语句 本帖最后由 asaSKTY 于 2021-1-18 20:01 编辑
public static String getBrowser(String userAgent) {
if (userAgent.length() < 4) {
return "其他浏览器";
}
这 userAgent.length() < 4 不对,如果我输入"Tao"length必然小于4,就不会走下面的if了。
你应该是拷贝第一个方法的时候忘记改了
改成 <=1 就好
asaSKTY 发表于 2021-1-18 11:21
public static String getBrowser(String userAgent) {
if (userAgent ...
lse if (userAgent.contains("TIM")) {//Internet Explorer 6
return "TIM访问";
} else if (userAgent.contains("QQ")) {//Internet Explorer 6
return "QQ访问";
else if (userAgent.contains("Tao")) {//Internet Explorer 6
return "淘宝浏览器";
else if (userAgent.contains("UC")) {//Internet Explorer 6
return "UC浏览器";
else if (userAgent.contains("360")) {//Internet Explorer 6
return "360浏览器";
这些分支,由于你 这里判断了length
if (userAgent.length() < 4) {
return "其他浏览器";
}
将永远无法执行到 不错不错,支持一下 这个else if 我爱了
代码这么长,不是一个规范的代码 Ubuntu端的Firefox84.0的UA是这样的:
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0 小非凡 发表于 2021-1-18 11:23
大佬们,想放到JS里面用,这个代码怎么改
java和js差不多 不是很好改吗,都是基础语法,都没开额外空间;不懂的百度一下就能解决了 WoShiXXX 发表于 2021-1-18 11:22
Ubuntu端的Firefox84.0的UA是这样的:
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 ...
好的谢谢你
页:
[1]
2