网站设备检测



我觉得这个问题以前一定在这里有答案,但是我到处都找不到。

网站能否检测到用户正在使用的设备 ?例如,如果用户正在浏览一个应用程序的网站,它是否知道显示一个链接到Google PlayApple App Store,这取决于他们使用的是什么设备?

我不认为$HTTP_USER_AGENT是足够的,因为iPad用户可能正在使用Chrome,而Android用户可能正在使用Firefox等。

我有PHP,当然还有Javascript。

检测设备或web浏览器的唯一方法是用户代理字符串,每个web浏览器都必须按照HTTP 1.1协议提供用户代理。用户代理字符串可以包含多个产品令牌。按照惯例,产品令牌按照其对识别应用程序的重要性顺序列出。

对于基于Mozilla的浏览器,user-agent字符串应该遵循以下格式:

 MozillaProductToken (MozillaComment) GeckoProductToken *
    (VendorProductToken|VendorComment)

嵌入Gecko布局引擎的应用程序应具有以下格式的用户代理字符串:

 ApplicationProductToken (ApplicationComment) GeckoProductToken *
    (VendorProductToken|VendorComment)

地点:

 ProductToken     :      Mozilla/ MozillaVersion
 Version          :      Major . Minor
 Comment          :      ( Platform; Security; OS-or-CPU;
                                 Localization information; 
                                 GeckoVersion)*[; Optional Other Comments] )
 Platform         :      Windows, Linux, Mac etc.
 Security         :      N for no security; 
                         U for strong security; 
                         I for weak security
 OS-or-CPU        :      Windows Version/MacOS 
 GeckoVersion     :      String starting with "rv:" followed 
                         by the Gecko version
 GeckoProductToken:      Gecko/GeckoDate
 GeckoDate        :      Date in the format YYYYMMDD

例子Mozilla发布

     Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101

基于与上面浏览器相同代码库的品牌版本

     Mozilla/5.001 (Macintosh; N; PPC; ja; rv:1.0) Gecko/25250101 
       MegaCorpBrowser/1.0 (MegaCorp, Inc.)

重新命名的版本

      Mozilla/9.876 (X11; U; Linux 2.2.12-20 i686, en; rv:2.0) Gecko/
        25250101 Netscape/5.432b1 (C-MindSpring)

基于gecko的浏览器

      TinyBrowser/2.0 (TinyBrowser Comment; rv:1.9.1a2pre) Gecko/20201231
歌剧

用户字符串规格:

  Opera/Version (OS-or-CPU; Encryption; Language)
<标题> 铬

他们使用WebKit作为渲染引擎,但使用不同的JavaScript引擎。在Chrome最初的测试版0.2版本中,user-agent字符串包含了来自WebKit的所有信息以及Chrome版本的额外部分。格式如下:

  Mozilla/5.0 (Platform; Encryption; OS-or-CPU; Language) 
  AppleWebKit/AppleWebKitVersion (KHTML, like Gecko) Chrome/
  ChromeVersion Safari/SafariVersion
  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, 
  like Gecko) Chrome/0.2.149.29 Safari/525.13
<标题> Konqueror h1>
 Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.0 (like Gecko)
<标题> WebKit h1> 2003年,苹果公司宣布将发布自己的网络浏览器,名为Safari。Safari渲染引擎名为WebKit,最初是基于linux的Konqueror web浏览器中使用的KHTML渲染引擎的一个分支。但是如何确保浏览器不会被热门网站锁定呢?答案是,在用户代理字符串中放入足够的信息,以使网站相信该浏览器与另一种流行的浏览器兼容。这将产生一个格式如下的用户代理字符串:
 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/
 124 (KHTML, like Gecko) Safari/125.1

手机和平板电脑指标

UA字符串的平台部分表示Firefox是运行在手机大小的设备上还是平板电脑上。当Firefox在具有手机外形因素的设备上运行时,它就是移动设备;标记在UA字符串的平台部分。例如:

 Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0
 Mozilla/5.0 (Android; Tablet; rv:13.0) Gecko/13.0 Firefox/13.0

但是,如果您使用UA嗅探来将内容定位到设备形状因子,请查找手机形状因子的Mobi(包括Opera Mobile,它使用"Mobi"),不要假设"Android"和设备形状因子之间存在任何相关性。

Android

 Phone    :     Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0
 Tablet   :     Mozilla/5.0 (Android; Tablet; rv:13.0) Gecko/13.0 Firefox/13.0
Firefox OS

 Phone    :     Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0

您可以同时使用服务器端和客户端技术来对访问者正在使用的设备进行智能猜测:

  • PHP可以解析用户代理或在已知设备的数据库中查找
  • Javascript可以检测许多api和浏览器的功能,给你一个关于设备功能的很好的图片。

虽然没有真正的保证(你基本上相信浏览器是什么选择告诉你关于它自己)这里有两个例子,你可以告诉用户设备:

  • http://www.thisdevice.info
  • http://wwww.browserleaks.com

相关内容

  • 没有找到相关文章

最新更新