2013-03-08 180 views
0

我觉得这个问题必须在这里已经回答过了,但我不能在任何地方找到它。网站设备检测

一个网站可以检测一下设备用户使用浏览?例如,如果用户在浏览网站的应用程序,可以在知道显示一个链接到谷歌播放苹果App Store的,这取决于他们使用何种设备?

我不认为$HTTP_USER_AGENT就足够了,因为iPad的用户可能会使用Chrome,和一个Android用户可能会使用Firefox

我有PHP在我手上,以及如JavaScript,自然。

+0

严格技术上说:没有。但实际建议您应该使用搜索;)(我试试,太) – hakre 2013-03-08 16:48:55

+0

在github上看了一下,发现了这个项目:https://github.com/serbanghita/Mobile-Detect。也许你可以使用它。 – Tjoene 2013-03-08 17:03:01

+0

@Tjoene看起来确实很聪明。我不知道它有多准确,但看起来很有希望。谢谢! – 2013-03-08 17:04:37

回答

1

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

对于基于Mozilla的浏览器,用户代理字符串应遵循以下格式:

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/202

OPERA

用户字符串规格:

Opera/Version (OS-or-CPU; Encryption; Language) 

他们使用的WebKit作为其渲染引擎,但使用不同的JavaScript引擎。对于Chrome的最初测试版本,0.2版本,用户代理字符串以及所有从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的

的Konqueror,在KDE Linux桌面环境捆绑浏览器,是基于KHTML开源渲染引擎。虽然仅在Linux上可用,但Konqueror拥有活跃的用户群。为了获得最佳的兼容性,Konqueror中选择IE后,设置其用户代理字符串如下:

Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.0 (like Gecko) 

的WebKit

在2003年,苹果宣布将推出自己的网络浏览器,Safari浏览器叫。被称为WebKit的Safari渲染引擎最初是基于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在具有手机外形的设备上运行时,会出现Mobile;令牌在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嗅探到目标内容到设备的外形尺寸,请认准摩比(包括Opera移动,它采用“牧高笛”)手机的外形和不假设“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 

火狐OS

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

您可以有哪些设备访问者使用同时使用服务器端和客户端技术做一个聪明的猜测:

  • PHP可以解析用户代理或在已知设备的数据库上查找它
  • Javascript可以检测浏览器的多个API和功能,为您提供关于设备功能的非常好的照片。

虽然没有真正的保证(你基本上相信无论浏览器是选择向大家介绍自己)这里有一个你可以告诉用户设备什么的两个样本: