• 通过userAgent判断手机浏览器类型


    我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWebKit关键字,可能会是Linux,UCBrowser等等。

    1. Javascript

    2. PHP

    3. .NET (C#)


    下面是Javascript代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <script type="text/javascript">
    /*
    * 智能机浏览器版本信息:
    */
    var browser={
    versions:function(){
    var u = navigator.userAgent, app = navigator.appVersion;
    return {//移动终端浏览器版本信息
    trident: u.indexOf('Trident') > -1, //IE内核
    presto: u.indexOf('Presto') > -1, //opera内核
    webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
    mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
    ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
    android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
    iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQ HD浏览器
    iPad: u.indexOf('iPad') > -1, //是否iPad
    webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
    };
    }(),
    language:(navigator.browserLanguage || navigator.language).toLowerCase()
    }
     
    document.writeln("语言版本: "+browser.language);
    document.writeln(" 是否为移动终端: "+browser.versions.mobile);
    document.writeln(" ios终端: "+browser.versions.ios);
    document.writeln(" android终端: "+browser.versions.android);
    document.writeln(" 是否为iPhone: "+browser.versions.iPhone);
    document.writeln(" 是否iPad: "+browser.versions.iPad);
    document.writeln(navigator.userAgent);
    </script>




    下面是通过检测关键字判断是不是手机在访问的PHP代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    /**
    * 判断是否是通过手机访问
    * @return bool 是否是移动设备
    */
    public function isMobile() {
    //判断手机发送的客户端标志
    if(isset($_SERVER['HTTP_USER_AGENT'])) {
    $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
    $clientkeywords = array(
    'nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-'
    ,'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu',
    'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini',
    'operamobi', 'opera mobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'
    );
    // 从HTTP_USER_AGENT中查找手机浏览器的关键字
    if(preg_match("/(".implode('|',$clientkeywords).")/i",$userAgent)&&strpos($userAgent,'ipad') === false)
    {
    return true;
    }
    }
    return false;
    }



    下面的jsp代码简单判断浏览器类型,如果是iphone或者android就跳转到手机版本网页:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%
    String ua = request.getHeader("User-Agent") ;
    if (ua != null) {
    if (ua.indexOf("iPhone") >-1 || ua.indexOf("iPad") >-1 || (ua.indexOf("ndroid") >-1 && ua.indexOf("WebKit") >-1)) {
    response.sendRedirect("http://localhost/mobile");
    return ;
    }
    }
    %>


    下面是.NET代码(C#)
    在.NET下,其中一个方法是利用HttpBrowserCapabilities,代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    System.Web.HttpBrowserCapabilities browser = Request.Browser;
    string s = "Browser Capabilities "
    + "Type = " + browser.Type + " "
    + "Name = " + browser.Browser + " "
    + "Version = " + browser.Version + " "
    + "Major Version = " + browser.MajorVersion + " "
    + "Minor Version = " + browser.MinorVersion + " "
    + "Platform = " + browser.Platform + " "
    + "Is Beta = " + browser.Beta + " "
    + "Is Crawler = " + browser.Crawler + " "
    + "Is AOL = " + browser.AOL + " "
    + "Is Win16 = " + browser.Win16 + " "
    + "Is Win32 = " + browser.Win32 + " "
    + "Supports Frames = " + browser.Frames + " "
    + "Supports Tables = " + browser.Tables + " "
    + "Supports Cookies = " + browser.Cookies + " "
    + "Supports VBScript = " + browser.VBScript + " "
    + "Supports JavaScript = " +
    browser.EcmaScriptVersion.ToString() + " "
    + "Supports Java Applets = " + browser.JavaApplets + " "
    + "Supports ActiveX Controls = " + browser.ActiveXControls
    + " "
    + "Supports JavaScript Version = " +
    browser["JavaScriptVersion"] + " ";



    在web.config中需要在filter中进行匹配

    1
    2
    3
    <system.web> <browserCaps> <use var="HTTP_USER_AGENT" />
    <filter> <case match="Windows NT 6.1"> platform=Windows7 </case> </filter>
    </browserCaps> </system.web>


    另外一个方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    ///<summary>
    /// 根据 Agent 判断是否是智能手机
    ///</summary>
    ///<returns></returns>
    public static bool CheckAgent()
    {
    bool flag = false;
     
    string agent = HttpContext.Current.Request.UserAgent;
    string[] keywords = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };
     
    //排除 Windows 桌面系统
    if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
    {
    //排除 苹果桌面系统
    if (!agent.Contains("Windows NT") && !agent.Contains("Macintosh"))
    {
    foreach (string item in keywords)
    {
    if (agent.Contains(item))
    {
    flag = true;
    break;
    }
    }
    }
    }
     
    return flag;
    }


    代码解释:

    1. !agent.Contains("Windows NT") && !agent.Contains("Macintosh") 排除Window 桌面系统 和 苹果桌面系统

    2. "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" 这些是判断智能设备Agent中的关键词

    3. MQQBrowser 为 QQ 手机浏览器,QQ 手机的Agent 比较特殊,所以单独判断


    各移动浏览器的http user-agent:

    一、微信的http user-agent(关键词MicroMessenger)

    1. Iphone(苹果)平台微信的ucweb的useragent:
    Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2


    2. Android(安卓)平台微信的ucweb的useragent:1
    Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255


    二、UC浏览器的http user-agent(关键词UCWEB)

    1. android平台:
    android平台ucweb急速模式开启下ucweb浏览器useragent: 
    UCWEB/2.0 (Linux; U; Adr 2.3; zh-CN; MI-ONEPlus) U2/1.0.0 UCBrowser/8.6.0.199 U2/1.0.0 Mobile

    android平台ucweb急速模式关闭状态下的http_user_agent:
    Mozilla/5.0 (Linux; U; Android 2.3; zh-CN; MI-ONEPlus) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/8.6.0.199 U3/0.8.0 Mobile Safari/534.13 

    2. iPhone 平台

    iPhone 平台极速模式开启状态下ucweb浏览器useragent: 
    UCWEB/2.0 (iOS; U; iPh OS 4_3_2; zh-CN; iPh4) U2/1.0.0 UCBrowser/8.6.0.199 U2/1.0.0 Mobile 

    iPhone 平台极速模式关闭状态下 UA 示例如下:(OBUA 为自带浏览器 UA)
    OBUA UCBrowser/8.6.0.199 Mobile

    3. iPad 平台
    ipad平台下ucweb浏览器useragent:
    Mozilla/5.0 (iPad; U; CPU OS 6_0 like Mac OS X; zh-CN; iPad2) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/8.6.0.199 U3/0.8.0 Safari/534.13 

    4. windows Phone平台
    WP平台下ucweb浏览器useragent:
    WP平台极速模式开启状态下:(以 Nokia 900 为例)
    UCWEB/2.0 (Windows; U; wds7.10; zh-CN; Nokia 900) U2/1.0.0 UCBrowser/8.6.0.199 U2/1.0.0 Mobile 

    5. 诺基亚平台
    诺基亚手机Symbian&Java平台ucweb浏览器useragen:
    Nokia 5800 XpressMusic/UCWEB8.9.0.253/50/999 

    安卓QQ浏览器HD版检测的结果是:mac, Safari,这个很是变态,自己看着处理吧

    3个检测浏览器User-Agent信息的网站

    三、一些特别的浏览器
    QQ浏览器(android)
    MQQBrowser/3.6/Adr (Linux; U; 4.0.3; zh-cn; HUAWEI U8818 Build/U8818V100R001C17B926;480*800)

    魅族UC浏览器(android)
    JUC (Linux; U; 2.3.5; zh-cn; MEIZU MX; 640*960) UCWEB8.5.1.179/145/33232

    UC浏览器(iphone)
    IUC(U;iOS 5.1;Zh-cn;320*480;)/UCWEB8.8.0.212/42/997

    Opera mobile(android)
    Opera/9.80 (Android 4.0.3; Linux; Opera Mobi/ADR-1210241554) Presto/2.11.355 Version/12.10

    Opera mini(iphone)
    Opera/9.80 (iPhone; Opera Mini/7.0.5/28.2690; U; zh) Presto/2.8.119 Version/11.10

    三个在线网站,通过手机浏览器就可以在线检测

    1. http://whatsmyuseragent.com/

    2. http://whatsmyua.com/

    3. http://www.useragentstring.com/

  • 相关阅读:
    定理,定律,公理
    逻辑的体系:论据-》论证-〉论点
    深度解读:数学的本质与宇宙万物的关联--数学的本质是一门语言
    第一性原理的钥匙—逻辑奇点
    系统论的两个方向:系统分析与系统构建
    系统
    科学思考
    系统思考-使用系统论构建系统
    系统论是大尺度的还原论的时空思考-系统论是宏观上的还原论
    思考的几种形式
  • 原文地址:https://www.cnblogs.com/Alex80/p/5809729.html
Copyright © 2020-2023  润新知