如何获取客户端信息,如操作系统和浏览器
我正在使用JSP,Servlet来开发我的Web应用程序。
我想获取客户端信息,例如:操作系统,浏览器,分辨率,...每当客户使用我的网站时。
我正在使用JSP,Servlet来开发我的Web应用程序。
我想获取客户端信息,例如:操作系统,浏览器,分辨率,...每当客户使用我的网站时。
最好的选择是用户代理标头。你可以在JSP或Servlet中得到这样的,
String userAgent = request.getHeader("User-Agent");
标题如下所示,
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13
它提供了有关浏览器的详细信息。但是,它几乎是免费的格式,因此很难破译每一个。您只需要弄清楚将支持哪些浏览器,并为每个浏览器编写解析器即可。当您尝试识别浏览器的版本时,请始终先检查较新版本。例如,IE6 用户代理可能包含 IE5 以实现向后兼容性。如果您先检查IE5,IE6也将被归类为IE5。
您可以从此网站获取所有用户代理值的完整列表,
使用用户代理,您可以分辨出浏览器的确切版本。你可以在操作系统上得到一个很好的想法,但你可能无法区分同一操作系统的不同版本,例如,Windows NT和2000可能使用相同的用户代理。
没有任何关于分辨率的问题。但是,您可以在AJAX调用上使用Javascript获得此功能。
在Java中,没有直接的方法可以获得浏览器和操作系统相关信息。
但是要获得这几个第三方工具。
我建议您不要信任第三方工具,而是解析用户代理。
String browserDetails = request.getHeader("User-Agent");
通过这样做,您可以根据需要轻松分离浏览器详细信息和操作系统相关信息。PFB 代码段以供参考(您也可以将其替换为开关盒)。
String browserDetails = request.getHeader("User-Agent");
String userAgent = browserDetails;
String user = userAgent.toLowerCase();
String os = "";
String browser = "";
log.info("User Agent for the request is===>"+browserDetails);
//=================OS=======================
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("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=(userAgent.substring(userAgent.indexOf("MSIE")).split(" ")[0]).replace("/", "-");
browser = "Netscape-?";
} else if (user.contains("firefox"))
{
browser=(userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
} else if(user.contains("rv"))
{
browser="IE-" + user.substring(user.indexOf("rv") + 3, user.indexOf(")"));
} else
{
browser = "UnKnown, More-Info: "+userAgent;
}
log.info("Operating System======>"+os);
log.info("Browser Name==========>"+browser);