通過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\n"
+ "Type = " + browser.Type + "\n"
+ "Name = " + browser.Browser + "\n"
+ "Version = " + browser.Version + "\n"
+ "Major Version = " + browser.MajorVersion + "\n"
+ "Minor Version = " + browser.MinorVersion + "\n"
+ "Platform = " + browser.Platform + "\n"
+ "Is Beta = " + browser.Beta + "\n"
+ "Is Crawler = " + browser.Crawler + "\n"
+ "Is AOL = " + browser.AOL + "\n"
+ "Is Win16 = " + browser.Win16 + "\n"
+ "Is Win32 = " + browser.Win32 + "\n"
+ "Supports Frames = " + browser.Frames + "\n"
+ "Supports Tables = " + browser.Tables + "\n"
+ "Supports Cookies = " + browser.Cookies + "\n"
+ "Supports VBScript = " + browser.VBScript + "\n"
+ "Supports JavaScript = " +
browser.EcmaScriptVersion.ToString() + "\n"
+ "Supports Java Applets = " + browser.JavaApplets + "\n"
+ "Supports ActiveX Controls = " + browser.ActiveXControls
+ "\n"
+ "Supports JavaScript Version = " +
browser[ "JavaScriptVersion" ] + "\n" ;



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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM