最近在开发中需要从request中获取操作系统,浏览器及浏览器版本信息。我们都知道通过request.getHeader("User-Agent")可以获取到。但是这样获取到的信息是一串内容,里面包含了操作系统和浏览器的信息。

这是我在我的电脑中用不同浏览访问,得到的信息。

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 //Chrom

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0 //FireFox

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 //Edge

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko //IE11

我们需要根据自己的需求去写方法获取。

下面这个方法是我根据StackOverflow上相同问题得到的方法改造后的方法,添加了Edge浏览器。用这个方法就可以得到我们想要的操作系统,浏览器及浏览器版本信息了。

/**
* 获取操作系统,浏览器及浏览器版本信息
* @param request
* @return
*/
public static String getOsAndBrowserInfo(HttpServletRequest request){
String browserDetails = request.getHeader("User-Agent");
String userAgent = browserDetails;
String user = userAgent.toLowerCase();

String os = "";
String browser = "";

//=================OS Info=======================
if (userAgent.toLowerCase().indexOf("windows") >= 0 )
{
os = "Windows";
} else if(userAgent.toLowerCase().indexOf("mac") >= 0)
{
os = "Mac";
} else if(userAgent.toLowerCase().indexOf("x11") >= 0)
{
os = "Unix";
} else if(userAgent.toLowerCase().indexOf("android") >= 0)
{
os = "Android";
} else if(userAgent.toLowerCase().indexOf("iphone") >= 0)
{
os = "IPhone";
}else{
os = "UnKnown, More-Info: "+userAgent;
}
//===============Browser===========================
if (user.contains("edge"))
{
browser=(userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-");
} else if (user.contains("msie"))
{
String substring=userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
browser=substring.split(" ")[0].replace("MSIE", "IE")+"-"+substring.split(" ")[1];
} else if (user.contains("safari") && user.contains("version"))
{
browser=(userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0]
+ "-" +(userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
} else if ( user.contains("opr") || user.contains("opera"))
{
if(user.contains("opera")){
browser=(userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0]
+"-"+(userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
}else if(user.contains("opr")){
browser=((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-"))
.replace("OPR", "Opera");
}

} else if (user.contains("chrome"))
{
browser=(userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-");
} else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1) ||
(user.indexOf("mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1) ||
(user.indexOf("mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1) )
{
browser = "Netscape-?";

} else if (user.contains("firefox"))
{
browser=(userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
} else if(user.contains("rv"))
{
String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-");
browser="IE" + IEVersion.substring(0,IEVersion.length() - 1);
} else
{
browser = "UnKnown, More-Info: "+userAgent;
}

return os +" --- "+ browser ;
}

转载于:https://www.cnblogs.com/lovelyp/p/10250776.html

获取用户的操作系统及浏览器信息相关推荐

  1. js获取用户的操作系统和浏览器版本的方法

     让IE支持placeholder属性 通过window.location获得URL的信息 js获取用户的操作系统和浏览器版本的方法 2013-07-17 15:12:11|  分类: 工作 |  ...

  2. 根据UA获取用户访问操作系统、浏览器名

    功能需求 统计用户通过何种浏览器访问系统.统计访问用户的操作系统. 依赖jar包 <!-- https://mvnrepository.com/artifact/eu.bitwalker/Use ...

  3. Emlog评论区显示用户操作系统与浏览器信息教程

    近期有不少初入Emlog的站长来咨询Emlog程序的评论区域如何实现获取到评价用户的操作系统和浏览器信息,其实要实现该功能也很简单,而且网上也有不少类是的插件.今天,冬镜就和大家聊聊不用插件来实现获取 ...

  4. Java基础:获取操作系统及浏览器信息

    Java基础:获取操作系统及浏览器信息 前言 今天博主将为大家分享Java基础:获取操作系统及浏览器信息,不喜勿喷,如有异议欢迎讨论! 有一个强大的地基才能写出健壮的程序! User Agent的含义 ...

  5. emlog评论ajax,emlog评论:获取评论用户操作系统与浏览器信息

    1.打开include/model/comment_model.php文件 找到while ($row = $this->db->fetch_array($ret)) { (约第45行), ...

  6. 微信小程序如何获取用户昵称性别地区等信息

    在inde.wxml文件中添加一个按钮,当点击按钮时获取用户信息 <button open-type="getUserInfo" bindgetuserinfo=" ...

  7. 微信公众号获取用户头像、昵称等信息

    微信公众号网页可以获取用户头像昵称等信息,具体怎么获取看代码: 前端代码: <!DOCTYPE html> <html lang="en"> <hea ...

  8. java中用户头像是怎么弄的_微信小程序获取用户openid,头像昵称信息,后台java代码...

    https://blog.csdn.net/qq_39851704/article/details/79025557 首先最近正在练习微信小程序刚刚写了一个获取用户openid的代码,貌似之前的小程序 ...

  9. 微信获得用户地理位置 php,微信获取用户的地理位置的经纬度信息

    开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 获取用户地理位置 用户同意上 ...

最新文章

  1. 【CV】吴恩达机器学习课程笔记第11章
  2. 清华天才王垠受邀面试阿里P9,被阿里P10赵海平面跪,整个事件回顾...
  3. 基于系统科学理论的认知科学研究进展
  4. 艾伟:C#多线程学习(六) 互斥对象
  5. 独立成分分析ICA系列4:ICA的最优估计方法综述
  6. 数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用
  7. 【线上分享】探讨TensorRT加速AI模型的简易方案:以图像超分为例
  8. 数据结构----二叉树叶子结点到根节点的高度计算
  9. oracle开放视图,Oracle视图
  10. Java calendar加减时间
  11. 【转】java编程思想第20章的注解例子用到的com.sun.mirror的jar包
  12. 没有并发经验,但是面试中经常被问到高并发,怎么破局?
  13. java设计与模式_设计模式《JAVA与模式》之状态模式
  14. javascript php 界面,js实现卡片式项目管理界面UI设计效果_javascript技巧
  15. python 列表有没有顺序_python的list有顺序吗
  16. android入门问题--R文件丢失
  17. linux lsb版本错误,CentOS中-bash: lsb_release: command not found错误的解决方法
  18. Hibernate Search 教程
  19. Python读写欧姆龙PLC(本工作是由具体项目而开展的)
  20. WTL 自绘控件库 (CQsRadioBox)

热门文章

  1. codeforces 652F
  2. ajax最核心的技术,Ajax技术的核心以及方法属性
  3. 360兼容模式下 对象不支持“attachEvent”属性
  4. 如何卸载微信小程序?微信常识分享
  5. OSI七层模型和TCP/IP四层模型详解
  6. nodejs中forEach和普通循环区别
  7. 10个优秀的Javascript的音频库
  8. HTTP 访问返回数字代码含义
  9. 解决方案:右键“我的电脑”,没有“属性”
  10. 行为识别C3D代码(pytorch)实现过程及常见错误