`

java 判断请求来自手机或电脑

 
阅读更多
java 判断 android、iphone等手机浏览器 http://www.aiisen.com/java-judge-is-moblie-zh.html, 这个也值得参考
Java/JavaScript两种方式判断浏览器是否是移动端浏览器 http://blog.csdn.net/yangzl2008/article/details/25245449

原文:http://www.111cn.net/jsp/Java/46177.htm
package com.zhuzher.commons.util;
 
import javax.servlet.http.HttpServletRequest;
 
public class HttpRequestDeviceUtils {
     /**Wap网关Via头信息中特有的描述信息*/
    private static String mobileGateWayHeaders[]=new String[]{
    "ZXWAP",//中兴提供的wap网关的via信息,例如:Via=ZXWAP GateWayZTE Technologies,
    "chinamobile.com",//中国移动的诺基亚wap网关,例如:Via=WTP/1.1 GDSZ-PB-GW003-WAP07.gd.chinamobile.com (Nokia WAP Gateway 4.1 CD1/ECD13_D/4.1.04)
    "monternet.com",//移动梦网的网关,例如:Via=WTP/1.1 BJBJ-PS-WAP1-GW08.bj1.monternet.com. (Nokia WAP Gateway 4.1 CD1/ECD13_E/4.1.05)
    "infoX",//华为提供的wap网关,例如:Via=HTTP/1.1 GDGZ-PS-GW011-WAP2 (infoX-WISG Huawei Technologies),或Via=infoX WAP Gateway V300R001 Huawei Technologies
    "XMS 724Solutions HTG",//国外电信运营商的wap网关,不知道是哪一家
    "wap.lizongbo.com",//自己测试时模拟的头信息
    "Bytemobile",//貌似是一个给移动互联网提供解决方案提高网络运行效率的,例如:Via=1.1 Bytemobile OSN WebProxy/5.1
    };
    /**电脑上的IE或Firefox浏览器等的User-Agent关键词*/
    private static String[] pcHeaders=new String[]{
    "Windows 98",
    "Windows ME",
    "Windows 2000",
    "Windows XP",
    "Windows NT",
    "Ubuntu"
    };
    /**手机浏览器的User-Agent里的关键词*/
    private static String[] mobileUserAgents=new String[]{
    "Nokia",//诺基亚,有山寨机也写这个的,总还算是手机,Mozilla/5.0 (Nokia5800 XpressMusic)UC AppleWebkit(like Gecko) Safari/530
    "SAMSUNG",//三星手机 SAMSUNG-GT-B7722/1.0+SHP/VPP/R5+Dolfin/1.5+Nextreaming+SMM-MMS/1.2.0+profile/MIDP-2.1+configuration/CLDC-1.1
    "MIDP-2",//j2me2.0,Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1 /110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML like Gecko) Safari/413
    "CLDC1.1",//M600/MIDP2.0/CLDC1.1/Screen-240X320
    "SymbianOS",//塞班系统的,
    "MAUI",//MTK山寨机默认ua
    "UNTRUSTED/1.0",//疑似山寨机的ua,基本可以确定还是手机
    "Windows CE",//Windows CE,Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
    "iPhone",//iPhone是否也转wap?不管它,先区分出来再说。Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; zh-cn) AppleWebKit/532.9 (KHTML like Gecko) Mobile/8B117
    "iPad",//iPad的ua,Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; zh-cn) AppleWebKit/531.21.10 (KHTML like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10
    "Android",//Android是否也转wap?Mozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; XT800 Build/TITA_M2_16.22.7) AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari/530.17
    "BlackBerry",//BlackBerry8310/2.7.0.106-4.5.0.182
    "UCWEB",//ucweb是否只给wap页面? Nokia5800 XpressMusic/UCWEB7.5.0.66/50/999
    "ucweb",//小写的ucweb貌似是uc的代理服务器Mozilla/6.0 (compatible; MSIE 6.0;) Opera ucweb-squid
    "BREW",//很奇怪的ua,例如:REW-Applet/0x20068888 (BREW/3.1.5.20; DeviceId: 40105; Lang: zhcn) ucweb-squid
    "J2ME",//很奇怪的ua,只有J2ME四个字母
    "YULONG",//宇龙手机,YULONG-CoolpadN68/10.14 IPANEL/2.0 CTC/1.0
    "YuLong",//还是宇龙
    "COOLPAD",//宇龙酷派YL-COOLPADS100/08.10.S100 POLARIS/2.9 CTC/1.0
    "TIANYU",//天语手机TIANYU-KTOUCH/V209/MIDP2.0/CLDC1.1/Screen-240X320
    "TY-",//天语,TY-F6229/701116_6215_V0230 JUPITOR/2.2 CTC/1.0
    "K-Touch",//还是天语K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223 Release/30.07.2008 Browser/WAP2.0
    "Haier",//海尔手机,Haier-HG-M217_CMCC/3.0 Release/12.1.2007 Browser/WAP2.0
    "DOPOD",//多普达手机
    "Lenovo",// 联想手机,Lenovo-P650WG/S100 LMP/LML Release/2010.02.22 Profile/MIDP2.0 Configuration/CLDC1.1
    "LENOVO",// 联想手机,比如:LENOVO-P780/176A
    "HUAQIN",//华勤手机
    "AIGO-",//爱国者居然也出过手机,AIGO-800C/2.04 TMSS-BROWSER/1.0.0 CTC/1.0
    "CTC/1.0",//含义不明
    "CTC/2.0",//含义不明
    "CMCC",//移动定制手机,K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223 Release/30.07.2008 Browser/WAP2.0
    "DAXIAN",//大显手机DAXIAN X180 UP.Browser/6.2.3.2(GUI) MMP/2.0
    "MOT-",//摩托罗拉,MOT-MOTOROKRE6/1.0 LinuxOS/2.4.20 Release/8.4.2006 Browser/Opera8.00 Profile/MIDP2.0 Configuration/CLDC1.1 Software/R533_G_11.10.54R
    "SonyEricsson",// 索爱手机,SonyEricssonP990i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 405) Opera 8.65 [zh-CN]
    "GIONEE",//金立手机
    "HTC",//HTC手机
    "ZTE",//中兴手机,ZTE-A211/P109A2V1.0.0/WAP2.0 Profile
    "HUAWEI",//华为手机,
    "webOS",//palm手机,Mozilla/5.0 (webOS/1.4.5; U; zh-CN) AppleWebKit/532.2 (KHTML like Gecko) Version/1.0 Safari/532.2 Pre/1.0
    "GoBrowser",//3g GoBrowser.User-Agent=Nokia5230/GoBrowser/2.0.290 Safari
    "IEMobile",//Windows CE手机自带浏览器,
    "WAP2.0"//支持wap 2.0的
    };
    /**
    * 根据当前请求的特征,判断该请求是否来自手机终端,主要检测特殊的头信息,以及user-Agent这个header
    * @param request http请求
    * @return 如果命中手机特征规则,则返回对应的特征字符串
    */
    public static boolean isMobileDevice(HttpServletRequest request){
            boolean pcFlag = false;
            boolean mobileFlag = false;
            String via = request.getHeader("Via");
            String userAgent = request.getHeader("user-agent");
            for (int i = 0; via!=null && !via.trim().equals("") && i < mobileGateWayHeaders.length; i++) {
                    if(via.contains(mobileGateWayHeaders[i])){
                            mobileFlag = true;
                            break;
                    }
            }
            for (int i = 0;!mobileFlag && userAgent!=null && !userAgent.trim().equals("") && i < mobileUserAgents.length; i++) {
                    if(userAgent.contains(mobileUserAgents[i])){
                            mobileFlag = true;
                            break;
                    }
            }
            for (int i = 0; userAgent!=null && !userAgent.trim().equals("") && i < pcHeaders.length; i++) {
                    if(userAgent.contains(pcHeaders[i])){
                            pcFlag = true;
                    }
            }
            if(mobileFlag==true && mobileFlag!=pcFlag){
                    return true;
            }
            return false;
    }
}
分享到:
评论

相关推荐

    判断请求是否来自手机

    有些时候我们需要判断此次请求来自手机还是电脑端,这个可以帮您解决

    java判断PC端,Andiro,IOS

    ### Java 判断客户端类型(PC、Android、iOS) 在 Web 开发中,有时我们需要根据用户的访问设备来调整网站的表现形式或功能实现。例如,我们可能希望为 PC 用户提供完整版的网页,而为移动端用户提供轻量级的版本,...

    javaweb判断当前请求是否为移动设备访问的方法

    服务器端可以通过解析User-Agent字符串来判断请求是否来自于移动设备。 ### 知识点二:正则表达式在User-Agent识别中的应用 在Java中,可以使用正则表达式来匹配User-Agent字符串,进而识别请求是否来自于移动设备...

    根据User Agent String判断客户端平台及浏览器源程序[Java和PHP版]

    通常,开发者会使用`java.net.HttpURLConnection`或`java.io.BufferedReader`来获取HTTP请求头中的UA字符串。然后,通过编写正则表达式或使用现成的库,如`UserAgentUtils`,对UA字符串进行解析。这个Java程序可能...

    java后台判断客户端是手机/PC并返回不同页面的实例

    Java后台判断客户端是手机/PC并返回不同页面的实例 在Web开发中,判断客户端是手机还是PC是非常重要的一步,因为这将影响到页面的展示和交互方式。在本文中,我们将分享一个使用Java后台判断客户端是手机/PC并返回...

    jsp判断请求来自手机示例代码

    在Web开发中,有时需要根据不同的客户端设备(如PC、平板电脑或手机)提供不同的内容。随着移动互联网的普及,越来越多的网站需要为移动设备优化。移动设备包括智能手机和功能手机,它们往往有特殊的浏览器环境和...

    java根据ip获取国家、地区名称,附带ip库

    对于Java开发者来说,最常见的是使用文本文件或数据库,因为它们易于集成和使用。 1. **IP库的使用** - **文本文件**:IP库可能是一个分隔符格式的文本文件,比如CSV或TSV,每一行代表一个IP范围和对应的国家/地区...

    如何限制电脑PC端访问Web页面只能手机端才能访问

    `User-Agent`包含了浏览器和操作系统的信息,可以根据其特征判断是否来自手机。例如,许多手机浏览器会在`User-Agent`字符串中包含"Mobile"、"Android"、"iPhone"等关键词。 - **屏幕尺寸检测**:另一种方式是检测...

    Java servlet判断是否是移动设备

    在当前场景中,我们关注的是如何通过Servlet来判断访问的用户是否使用了移动设备,比如智能手机或平板电脑。这在开发响应式网站或者移动应用的后端时尤其重要,因为我们需要根据不同的设备类型提供不同的页面布局或...

    短信验证码_JAVA短信接口对接

    【短信验证码_JAVA短信接口对接】是针对移动应用或网站安全验证的一种常见技术,通过将随机生成的一次性密码(OTP)发送到用户手机,确保用户身份的真实性。在这个专题中,我们将深入探讨如何使用JAVA语言集成秒嘀...

    java_doudizhu.rar_java doudizhu_java斗地主_手机 斗地主_斗地主

    Java是一种广泛应用于各种平台的高级编程语言,因其跨平台性和丰富的类库,常被用于开发移动应用,包括手机小游戏。本篇文章将深入探讨如何使用Java来开发一款经典的休闲游戏——斗地主。 斗地主是一款在中国非常...

    JavaUser-Agent解析库

    - `Device`类:表示设备类型,如智能手机、平板电脑或桌面电脑。 - `Parser`接口:定义了解析User-Agent字符串的方法,库内可能提供了多种解析策略。 使用这个库时,首先需要将其添加到项目依赖中,例如在Maven项目...

    JAVA五子棋手机网络对战游戏的设计与实现(源代码+论文)

    同时,为了增加游戏的趣味性,可能还设计有AI模式,使用了一些简单的决策策略,如最小最大搜索或基于规则的决策树,让电脑能与玩家进行对弈。 此外,毕业设计的性质意味着这个项目可能包含了详细的文档,如设计文档...

    UserAgentUtils

    UserAgent:通过浏览器获取用户浏览器和电脑信息

    Java EE常用框架.xmind

    判断流程实例是否为空来判断流程是否结束了 查看正在运行服务的详细信息 通过流程实例来开启流程 流程变量:它涉及到了两张表。 流 程变量实际上就是我们的条件。 作用 我们...

    java毕业设计论文

    - **多线程**:处理并发请求,如同时多人借阅或归还书籍。 - **文件管理**:可能涉及电子书的存储和读取。 - **权限控制**:不同用户(如管理员、普通读者)有不同的操作权限。 3. **五子棋游戏**: - **图形...

    自动切换电脑版手机版网页(PHP、ASP)

    在PHP中,自动识别用户代理(User-Agent)并根据其特性重定向到电脑版或手机版页面,是一种常见的策略。以下是一个详细的示例代码: ```php $mobile_browser = 0; // 检查用户代理是否包含移动设备关键词 if ...

    java编写的象棋

    在描述中提到,这个象棋类已经实现了基本的游戏逻辑,但网络功能尚未添加,这意味着玩家目前只能与计算机或在同一台电脑上的另一人进行对战,不能进行远程对局。 1. **Java基础**:首先,你需要对Java编程语言有...

    java 网络 象棋 服务器 客户端 socket tcp

    这部分代码可能包含解析客户端的请求,更新游戏状态,判断合法性,以及向所有客户端广播更新。 9. **资源文件管理** 压缩包中的"src"目录通常包含了源代码文件,"build"可能是编译后的类文件或构建脚本,而"res...

    Java实现的单机版五子棋

    为了实现五子棋的可视化界面,开发者通常会使用Java的Swing或JavaFX库。这些库提供了丰富的组件,如JFrame、JPanel、JButton等,用于构建窗口、面板和按钮等元素。通过监听事件,比如鼠标点击,来处理用户的交互...

Global site tag (gtag.js) - Google Analytics