ZZ *_*der 58
您最好的选择是User-Agent标头.你可以在JSP或Servlet中得到它,
String userAgent = request.getHeader("User-Agent");
Run Code Online (Sandbox Code Playgroud)
标题看起来像这样,
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
Run Code Online (Sandbox Code Playgroud)
它提供有关浏览器的详细信息.然而,它几乎是免费的格式,因此很难解读每一个.您只需要弄清楚您将支持哪些浏览器并为每个浏览器编写解析器.当您尝试识别浏览器的版本时,请始终先检查更新的版本.例如,IE6用户代理可能包含IE5以实现向后兼容.如果先检查IE5,IE6也会被归类为IE5.
您可以从此网站获取所有用户代理值的完整列表,
使用User-Agent,您可以告诉浏览器的确切版本.您可以在操作系统上获得一个非常好的想法,但您可能无法区分同一操作系统的不同版本,例如,Windows NT和2000可能使用相同的用户代理.
决议没有任何意义.但是,您可以在AJAX调用上使用Javascript获取此信息.
lam*_*dar 54
在Java中,没有直接的方法来获取浏览器和操作系统相关的信息.
但要获得这些少数第三方工具.
相反,信任的第三方工具,我建议你分析的用户代理.
String browserDetails = request.getHeader("User-Agent");
Run Code Online (Sandbox Code Playgroud)
通过这样做,您可以根据您的要求轻松分离浏览器详细信息和操作系统相关信息.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);
Run Code Online (Sandbox Code Playgroud)
小智 13
您可以使用bitwalker useragentutils库:https://github.com/HaraldWalker/user-agent-utils.它将为您提供有关浏览器(名称,类型,版本,制造商等)和操作系统的信息.它的一个好处是它得到维护.访问我提供的链接,以查看您需要添加到项目中的Maven依赖项以便使用它.
请参阅下面的示例代码,它返回浏览器名称和浏览器版本.
UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
Browser browser = userAgent.getBrowser();
String browserName = browser.getName();
//or
// String browserName = browser.getGroup().getName();
Version browserVersion = userAgent.getBrowserVersion();
System.out.println("The user is using browser " + browserName + " - version " + browserVersion);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112444 次 |
| 最近记录: |