服务器端移动浏览器检测

时间:2013-12-17 19:08:55

标签: java http networking network-programming

无论如何,如果HTTP请求来自移动浏览器,具有100%的准确性,是否在服务器端(例如在Servlet上)进行检测?仅通过检查有关HTTP_X_WAP_PROFILE,HEADER_HTTP_ACCEPT或UA的http标头是否可行?

编辑:请从您的答案中排除安全威胁,例如欺骗http请求。你不需要考虑到这一点。

由于

2 个答案:

答案 0 :(得分:0)

常见的方法是检查用户代理字符串是否与以下正则表达式匹配:

/obile/

答案 1 :(得分:0)

如果您使用51Degrees的解决方案,则可以在Java servlet中检测服务器端移动设备。 51Degrees文档部分包含一个complete set of instructions,从设置新的servlet到将设备检测集成到现有的servlet中。

将设备检测集成到servlet中:

sourceforge下载Java设备检测器。从存档中提取文件。将'dist'和'lib / webapp'目录中的JAR添加到项目中。添加导入:

import fiftyone.mobile.detection.webapp.BaseServlet;

更改

public class MyServlet extends HttpServlet {

要:

public class MyServlet extends BaseServlet {

现在,每个请求都会检测到设备,并且某些属性可用。要访问这些属性,请使用:

getProperty(request,"PropertyName");

其中“PropertyName”是您要检索的属性的名称,请求是HttpServletRequest。属性以字符串形式返回。可以在Property Dictionary页面上找到支持的属性的完整列表。但为了识别移动设备,您可以使用:

boolean isMobile = Boolean.parseBoolean(getProperty(request,"IsMobile"));

此特定解决方案的好处是在检测过程中不使用正则表达式。