通过userAgent(用户代理)判断手机浏览器类型并跳转指定页面

  • 通过userAgent(用户代理)判断手机浏览器类型并跳转指定页面已关闭评论
  • 6,055 views
  • A+
所属分类:技术分享

有时候我们的网页需要指定的浏览器访问,这时候我们可以通过userAgent来判断,比如检测某款浏览器关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWebKit关键字,可能会是Linux,UCBrowser等等。

下面【来群网 www.laiqun.cn】将把3种代码分享给大家:

1. Javascript     2. PHP      3.NET (C#)

1.下面是Javascript代码

  1. <script type="text/javascript">
  2. /* 
  3. * 智能机浏览器版本信息: 
  4. */
  5. var browser={
  6. versions:function(){
  7. var u = navigator.userAgent, app = navigator.appVersion;
  8. return {//移动终端浏览器版本信息 
  9. trident: u.indexOf('Trident') > -1//IE内核 
  10. presto: u.indexOf('Presto') > -1//opera内核 
  11. webKit: u.indexOf('AppleWebKit') > -1//苹果、谷歌内核 
  12. gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1//火狐内核 
  13. mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端 
  14. ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 
  15. android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1//android终端或者uc浏览器 
  16. iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1//是否为iPhone或者QQ HD浏览器 
  17. iPad: u.indexOf('iPad') > -1//是否iPad 
  18. webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 
  19. };
  20. }(),
  21. language:(navigator.browserLanguage || navigator.language).toLowerCase()
  22. }
  23. document.writeln("语言版本: "+browser.language);
  24. document.writeln(" 是否为移动终端: "+browser.versions.mobile);
  25. document.writeln(" ios终端: "+browser.versions.ios);
  26. document.writeln(" android终端: "+browser.versions.android);
  27. document.writeln(" 是否为iPhone: "+browser.versions.iPhone);
  28. document.writeln(" 是否iPad: "+browser.versions.iPad);
  29. document.writeln(navigator.userAgent);
  30. </script>

2.下面是通过检测关键字判断是不是手机在访问的PHP代码:

  1. <?php
  2. /**
  3. * 判断是否是通过手机访问
  4. * @return bool 是否是移动设备 
  5. */
  6. public function isMobile() {
  7. //判断手机发送的客户端标志
  8. if(isset($_SERVER['HTTP_USER_AGENT'])) {
  9. $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
  10. $clientkeywords = array(
  11. 'nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-'
  12. ,'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu',
  13. 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini',
  14. 'operamobi', 'opera mobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'
  15. );
  16. // 从HTTP_USER_AGENT中查找手机浏览器的关键字
  17. if(preg_match("/(".implode('|',$clientkeywords).")/i",$userAgent)&&strpos($userAgent,'ipad') === false)
  18. {
  19. return true;
  20. }
  21. }
  22. return false;
  23. }

3.下面的jsp代码简单判断浏览器类型,如果是iphone或者android就跳转到手机版本网页:

  1. <%
  2. String ua = request.getHeader("User-Agent") ;
  3. if (ua != null) {
  4. if (ua.indexOf("iPhone") >-1 || ua.indexOf("iPad") >-1 || (ua.indexOf("ndroid") >-1 && ua.indexOf("WebKit") >-1)) {
  5. response.sendRedirect("https://www.laiqun.cn");
  6. return ;
  7. }
  8. }
  9. %>

4.下面是.NET代码(C#)
在.NET下,其中一个方法是利用HttpBrowserCapabilities,代码如下:

  1. System.Web.HttpBrowserCapabilities browser = Request.Browser;
  2. string s = "Browser Capabilities\n"
  3. "Type = " + browser.Type + "\n"
  4. "Name = " + browser.Browser + "\n"
  5. "Version = " + browser.Version + "\n"
  6. "Major Version = " + browser.MajorVersion + "\n"
  7. "Minor Version = " + browser.MinorVersion + "\n"
  8. "Platform = " + browser.Platform + "\n"
  9. "Is Beta = " + browser.Beta + "\n"
  10. "Is Crawler = " + browser.Crawler + "\n"
  11. "Is AOL = " + browser.AOL + "\n"
  12. "Is Win16 = " + browser.Win16 + "\n"
  13. "Is Win32 = " + browser.Win32 + "\n"
  14. "Supports Frames = " + browser.Frames + "\n"
  15. "Supports Tables = " + browser.Tables + "\n"
  16. "Supports Cookies = " + browser.Cookies + "\n"
  17. "Supports VBScript = " + browser.VBScript + "\n"
  18. "Supports JavaScript = " +
  19. browser.EcmaScriptVersion.ToString() + "\n"
  20. "Supports Java Applets = " + browser.JavaApplets + "\n"
  21. "Supports ActiveX Controls = " + browser.ActiveXControls
  22. "\n"
  23. "Supports JavaScript Version = " +
  24. browser["JavaScriptVersion"] + "\n";

在web.config中需要在filter中进行匹配

  1. <system.web> <browserCaps> <use var="HTTP_USER_AGENT" />
  2. <filter> <case match="Windows NT 6.1"> platform=Windows7 </case> </filter>
  3. </browserCaps> </system.web>

另外一个方法:

  1. ///<summary>
  2. /// 根据 Agent 判断是否是智能手机
  3. ///</summary>
  4. ///<returns></returns>
  5. public static bool CheckAgent()
  6. {
  7. bool flag = false;
  8. string agent = HttpContext.Current.Request.UserAgent;
  9. string[] keywords = { "Android""iPhone""iPod""iPad""Windows Phone""MQQBrowser" };
  10. //排除 Windows 桌面系统
  11. if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
  12. {
  13. //排除 苹果桌面系统
  14. if (!agent.Contains("Windows NT") && !agent.Contains("Macintosh"))
  15. {
  16. foreach (string item in keywords)
  17. {
  18. if (agent.Contains(item))
  19. {
  20. flag = true;
  21. break;
  22. }
  23. }
  24. }
  25. }
  26. return flag;
  27. }

代码解释:
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/

本文转载自:http://blog.okbase.net/haobao/archive/1262.html

weinxin
来群网微信公众号:laiquncn
打开微信扫一扫关注我们,技术教程、热门软件、淘宝大额优惠券等免费领取