代码之家  ›  专栏  ›  技术社区  ›  Peter

基于http请求在web应用程序中检测移动浏览器的标准方法

  •  56
  • Peter  · 技术社区  · 17 年前

    我们正开始为企业电子商务webapp(基于Java/Servlet)提供移动浏览器支持。当然有很多决定要做,但在我看来,基石是能够可靠地检测移动浏览器,并对要返回的内容做出相应的决定。是否有一种标准方法(快速)基于http请求进行此确定,并理想地收集关于发出请求的给定浏览器和设备的更多信息(屏幕大小、html功能等)。

    我还希望有人能够提供任何有用的补充信息,这些信息都是从开发方面获取现有大型企业webapp并设计出移动浏览器支持的。

    [编辑]一些用户提出了一些解决方案,包括通过电话呼叫某个将进行检测的web服务。虽然我确信这是可行的,但对于企业电子商务网站来说,这不是一个好的解决方案,原因有二:1)速度。对第三方的每一个页面请求进行一次在线调用都会对性能产生巨大影响。2) 依赖/法律。我们会将我们的网站响应时间和关键功能与他们的服务联系起来,这对于法律和风险来说都是可怕的。

    19 回复  |  直到 16 年前
        1
  •  42
  •   David    17 年前

    标准的方法不是检查用户代理吗?这里有一个 database of user agents 您可以使用来检测移动浏览器。

        2
  •  20
  •   mmmmmm    13 年前

    @David的回答提到使用WURFL——这可能是您最好的选择。然而,事先警告一下,成功率通常在60%左右(根据我和其他人的经验)。随着运营商不断更换UA,以及现有设备配置文件的数量(60000+?),没有防弹的方法来获取您想要的所有正确数据。

    在严重依赖设备DB之前,只需发出一点警告。如果我猜错了,我会允许用户更改会话选项,以保持用户选项的开放性。

        3
  •  8
  •   Adam    15 年前

    Modernizer 检测浏览器功能

        4
  •  6
  •   Paul    15 年前

    经过几天的搜索,找到了检测移动设备的正确方法,我决定保持它的简单[愚蠢],我将在我的索引页上放置一个“移动设备站点”按钮。。。。只需点击一下!!

        5
  •  6
  •   Valery Viktorovsky    10 年前

    虽然你可以通过它的用户代理来检测移动浏览器,但PC平台上的浏览器大战表明,嗅探用户代理并不是一件好事。

    理想情况下,应该根据媒体类型应用特定的样式,或者根据用户代理以外的标题发送不同的答案,例如告诉浏览器更喜欢哪种内容的Accept标题。

        6
  •  4
  •   Milen A. Radev    17 年前

    This article follow-up )看起来不错。

        7
  •  4
  •   ripper234 Jonathan    13 年前

    Detect Mobile Browsers -各种编程语言中的代码段。

        8
  •  3
  •   ian    14 年前

    <VirtualHost (your-address-binding)>   
    
      (your-virtual-host-configuration)       
    
      RewriteEngine On     
      RewriteCond %{QUERY_STRING} !ui=pc
      RewriteCond %{HTTP_COOKIE} !ui=pc
      RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR]
    
      RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC] 
    
      RewriteRule /(.*) http://bemoko.com/$1 [L]
    
      RewriteCond %{QUERY_STRING} "ui=pc"
      RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/]
      RewriteCond %{QUERY_STRING} "ui=default"
      RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/]
    </VirtualHost>
    

    更多关于这方面的背景资料@ http://bemoko.com/training.team/help/team/pc-to-mobile-redirect

        9
  •  2
  •   Klint Klint    16 年前

    我提出了一个基于uaprof和用户代理的免费检测系统: http://www.mobilemultimedia.be 当UAprof可用时,它应该是检测的主键,因为同一UAprof通常有多个用户代理。如果您想自己管理这个数据库,那么应该使用Wurfl,因为您可以下载整个数据库并自己在本地管理它。

        10
  •  2
  •   Dave DuPlantis    16 年前

    当我最近有类似的需求时,我发现 this code HTTP_X_WAP_PROFILE , HTTP_ACCEPT HTTP_USER_AGENT

        11
  •  1
  •   Vijesh VP    17 年前

    您将从请求头获得大多数信息,如浏览器、设备、可接受的语言、可接受的格式等。上面提到的用户代理是请求头的一部分。

        12
  •  1
  •   Samuel Fullman    15 年前

    然后,在浏览器站点到移动站点的链接上,注册他们的“投票”和他们的用户代理。您可以建立自己的可靠列表 你的

    哦,在你的“移动站点”——如果你在语义上写得很好,那么你应该能够为移动和浏览器提供一个站点,而不是必须编写两个单独的页面集。只是想一想-这是值得额外的思考和努力,以节省时间以后。

        13
  •  1
  •   rrrr-o    14 年前

    我看不到它张贴在这里,但另一个选择,我正在研究目前是 www.detectmobilebrowser.com

        14
  •  1
  •   9jabooks    14 年前

        15
  •  0
  •   hayalci    17 年前

    您必须使用先前定义的列表检查用户代理字符串, like this one

        16
  •  0
  •   Don Don    17 年前

    您可以使用Web服务来检测手机浏览,如handsetdetection.com。

        17
  •  0
  •   Rich Holdsworth Rich Holdsworth    16 年前

    当然,几年前,你可以搜索某些字符串,猜测它是诺基亚或其他什么,但现在有这么多手机在那里,这么多假装的东西,他们不是,所以需要更复杂的东西。

    我发现了一个很棒的网站 link text

    只要看看手册,然后看看“它是如何工作的”。

        18
  •  0
  •   Kevin Hakanson    15 年前

    刚刚遇到 Device and feature detection on the mobile web 包括以下内容:

    1. 使用设备和功能检测改善移动web上的用户体验
    2. 设备检测简介
    3. 移动站点设计方法
      1. 无所事事
      2. 提供通用移动站点
      3. 设计时考虑到移动和适应性
    4. 内容自适应和设备分组策略
      1. 设备分组
    5. 把适应的需要降到最低
      1. 服务器端自适应
      2. 结合设备数据库查找的服务器端UA字符串
      3. 服务器端用户代理配置文件(UAProf)检测
      4. 基于JavaScript技术的检测
      5. CSS媒体类型
      1. 登录页+手动链接
        19
  •  0
  •   Prathamesh Rasam    11 年前

    您可以使用WURFL API来检测设备类型

    http://wurfl.sourceforge.net/wurfl_schema.php
    

    Modernizer