2013-03-08 99 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和功能,爲您提供關於設備功能的非常好的照片。

雖然沒有真正的保證(你基本上相信無論瀏覽器是選擇向大家介紹自己)這裏有一個你可以告訴用戶設備什麼的兩個樣本: