专栏首页WindCoder通过Js判断客户端为PC端还是手持设备

通过Js判断客户端为PC端还是手持设备

原理

Js中获取浏览器信息字符串只要使用navigator.userAgent即可,这样我们再利用indexof来判断版本或其它信息了。

代码实例

1.简化版

function IsPC() {
       var userAgentInfo = navigator.userAgent;
       var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");
       var flag = true;
       for (var v = 0; v < Agents.length; v++) {
            if (userAgentInfo.indexOf(Agents[v]) > 0) {
                flag = false;
                break;
             }
       }
       return flag;
}

2.详细版

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.*/), //是否为移动终端
                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 , //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
            };
         }(),
         language:(navigator.browserLanguage || navigator.language).toLowerCase()
}

  if(browser.versions.mobile || browser.versions.ios || browser.versions.android ||
  	browser.versions.iPhone || browser.versions.iPad){
   		window.location = "http://m.zhaizhainv.com";
  }

3.基本版

js的

alert(navigator.userAgent.toLowerCase());

方式获取浏览器的userAgent信息

扩展

网络爬虫的爬取问题

爬虫请求头中的User-Agent也包含了特殊的标记信息,我们获取到该信息判断是否爬虫,然后返回最佳的SEO页面就可以了。

网络爬虫在发送http请求获取网页数据时也会在头部附加 User-Agent信息,特别注意的一点就是有些野蜘蛛 User-Agent信息为空,这样就需要在程序中做是否为空的判断,防止robots.txt 文件也对它的限制无效,导致不断的爬去你的网站。

可以像下面这样(PHP实例,其他同理),判断到访问者的User-Agent为空,则返回404:

<?php
   $flag = false;
   $ua = $SERVER['HTTP_USER_AGENT'];
   if($ua == ''){
      $flag = true;
   }
   if($flag){
      header('HTTP/1.1 404 Not Found');
      header("status: 404 Not Found");
      echo '您的请求未通过我们的验证!';
      exit();
   }
?>

主要搜索引擎官方给出的一些user agent信息:

百度:http://www.baidu.com/search/spider.htm

google:https://support.google.com/webmasters/answer/1061943

360:http://www.so.com/help/help_3_2.html

sogou:http://www.sogou.com/docs/help/webmasters.htm#07

soso:http://help.soso.com/webspider.htm(这条可以无视,原因你懂得)

原理、标记信息等说的差不多了,剩下的靠自己啦,不管你要拿去做什么,不要让我知道哦,我什么都不知道= =

参考地址

Js判断客户端是否为PC还是手持设备

利用JS userAgent判断识别浏览器代码

HTTP请求中的User-Agent 判断浏览器类型的各种方法 网络爬虫的请求标示

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Tomcat设置虚拟目录

    在tomcat文件夹的conf\catalina\localhost(对于Tomcat6版本及其以上,需要自己创建catalina和localhost这两个文件...

    汐楓
  • 并发学习笔记07-volatile的内存语义

    对volatile变量的单个读/写,可看成是使用同一个锁对这些单个读/写操作做了同步。如示例:

    汐楓
  • 12/10JavaWeb开发笔记

    一直用这边做服务器端了,之前帮朋友完成个作业,竟然要动态网站,目前唯一会点的也就这个了,由于时间和实力的问题到最后只做了个连接数据库添加和调用评论的功能。讲几个...

    汐楓
  • 请删除你的NPP吧,可以用EmEditor,MadEdit,PSPad等编辑工具! 博客分类: 心困网中央 vim.netPHPthrea

    兄弟,支持你爱国的精神! 可是javaeye是怎么了,我只是说我不用notepad++了,因为它在主页上的文字,结果我的文章就被隐藏了,还扣分。 真得很郁闷...

    阿敏总司令
  • 前端:圆图头像制作--border-radius : 100%

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html border-radius : 100% ...

    逸鹏
  • 【干货荟萃】机器学习&深度学习知识资料大全集(二)(论文/教程/代码/书籍/数据/课程等)

    【导读】转载来自ty4z2008(GItHub)整理的机器学习&深度学习知识资料大全荟萃,包含各种论文、代码、视频、书籍、文章、数据等等。是学习机器学习和深度学...

    WZEARW
  • WPF 设置 WS_EX_TRANSPARENT 触摸失效

    调用 SetWindowLong 方法给 GWL_EXSTYLE 设置 WS_EX_TRANSPARENT 让窗口透明,此时应用程序只能收到鼠标消息但收不到触摸...

    林德熙
  • 浏览器内核(理解)

      浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。

    黑泽君
  • 学界 | 斯坦福数据科学Phd新课放出阅读清单,你读过哪些?

    大数据文摘
  • salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少。上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资...

    用户1169343

扫码关注云+社区

领取腾讯云代金券