根据userAgent判断客户端是否手机、操作系统、浏览器等信息

User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。UA可以进行伪装。(wiki)

分析浏览器的User-Agent 我们可以收集客户端相关信息:是否手机、操作系统、浏览器等信息。

效果:http://1.billo.sinaapp.com/

以下为获取json格式ua的函数

ua为字符串格式的 User-Agent 字段

import urllib
import urllib2
import json
def getUA(ua):
    ua = urllib.quote(ua)
    url = "http://www.useragentstring.com/?uas=%s&getJSON=all" %ua
    keys = {
            "Host":"www.useragentstring.com",
            "User-Agent":"Mozilla/5.0 (Windows NT 6.4; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0"
        }
    req = urllib2.Request(url)
    for key in keys:
        req.add_header(key,keys[key])
    j = urllib2.urlopen(req).read()
    j = json.loads(j)
return j
 

request.headers[‘User-Agent‘] 可以返回 User-Agent 的字符串

然后通过useragentstring这个网站的api可以获得一个解析后的User-Agent的json

识别是否为手机客户端的只要识别User-Agent中是否有"Mobile"字段即可

系统识别

如果是windows系统,解析User-Agent得到的json中的os_name是windows是内核版本

目前主流的系统标识对应如下:

"Windows NT 6.4":"Windows 10",

"Windows NT 6.3":"Windows 8.1",

"Windows NT 6.2":"Windows 8",

"Windows NT 6.0":"Windows vista",

"Windows NT 6.1":"Windows 7",

"Windows NT 5.1":"Windows XP",

建立字典遍历这些标识便可

useragentstring返回的agent_name无法识别部分浏览器,只能显示内核

浏览器识别

IE浏览器判断的标准是”MSIE“字段

UC浏览器的判断标准是”UCWEB“字段和”UCBrowser”字段

opera浏览器的判断标准是“opera“字段

搜狗浏览器的判断标准是”SE“、”MetaSr“字段

搜狗手机浏览器的判断标准是”SogouMobileBrowser"字段

chrome浏览器的判断标准是“chrome“字段

Safari浏览器的判断标准是“safari“字段

Firefox的判断标准是“Firefox“字段

QQ浏览器包含”TencentTraveler“或者”QQBrowser“字段

360浏览器的判断标准是”360SE”字段

Theworld浏览器的判断标准是”The world“字段

遨游浏览器的判断标准是”Maxthon“字段

下面建立一个字典存储主流浏览器类型:

Browser = {

"SogouMobileBrowser":"搜狗手机浏览器",

"UCBrowser":"UC浏览器",

"UCWEB":"UC浏览器",

"Opera":"Opera浏览器",

"QQBrowser":"QQ浏览器",

"TencentTraveler":"QQ浏览器",

"MetaSr":"搜狗浏览器",

"360SE":"360浏览器",

"The world":"世界之窗浏览器",

"Maxthon":"遨游浏览器",

}

遍历这些标识便可

一个根据userAgent判断操作系统和浏览器类型的例子

#coding:utf-8
import tornado.web
import sys
import urllib
import urllib2
import json
import os.path
from tornado.httpclient import AsyncHTTPClient

class WelcomeHandler(tornado.web.RequestHandler):
    def get(self):
        ua = self.request.headers['User-Agent']
        isMobile = "你不是手机客户端" if ua.find("Mobile") == -1 else "你是手机客户端"
        uainfor = self.getUA(ua)
        self.render('index.html',
                    user=self.current_user,
                    head=self.request.headers['User-Agent'],
                    h=isMobile,
                    ua=uainfor
                    )
    def getUA(self, ua):
        ua_url = urllib.quote(ua) # 转url编码
        url = "http://www.useragentstring.com/?uas=%s&getJSON=all" % ua_url
        keys = {
                "Host":"www.useragentstring.com",
                "User-Agent":"Mozilla/5.0 (Windows NT 6.4; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0"
            }
        req = urllib2.Request(url)
        for key in keys:
            req.add_header(key,keys[key])
        j = urllib2.urlopen(req).read()
        j = json.loads(j)
        Windows = {
        "Windows NT 6.4":"Windows 10",
        "Windows NT 6.3":"Windows 8.1",
        "Windows NT 6.2":"Windows 8",
        "Windows NT 6.0":"Windows 8",
        "Windows NT 6.1":"Windows 7",
        "Windows NT 5.1":"Windows XP",
        }
        Browser = {
        "SogouMobileBrowser":"搜狗手机浏览器",
        "UCBrowser":"UC浏览器",
        "UCWEB":"UC浏览器",
        "Opera":"Opera浏览器",
        "QQBrowser":"QQ浏览器",
        "TencentTraveler":"QQ浏览器",
        "MetaSr":"搜狗浏览器",
        "360SE":"360浏览器",
        "The world":"世界之窗浏览器",
        "Maxthon":"遨游浏览器",
        }
        for name in Windows:
            if ua.find(name) != -1:
                j["os_name"] = Windows[name]
        for name in Browser:
            if ua.find(name) != -1:
                j["agent_name"] = Browser[name]
        return j

settings = {
        "template_path": os.path.join(os.path.dirname(__file__), "templates"),
        "debug": True,
}

# application should be an instance of `tornado.web.Application`,
# and don't wrap it with `sae.create_wsgi_app`
application = tornado.web.Application([
        (r'/', WelcomeHandler),
    ], **settings)

效果如下:

时间: 2024-11-10 13:16:25

根据userAgent判断客户端是否手机、操作系统、浏览器等信息的相关文章

JS判断客户端是手机还是PC的2个代码

Javascript 判断客户端是否为 PC 还是手持设备,有时候项目中需要用到,很方便的检测,源生的哦,方法一共有两种 1.第一种: 复制代码代码如下: function IsPC() {    var userAgentInfo = navigator.userAgent;    var Agents = ["Android", "iPhone",                "SymbianOS", "Windows Phone

JS判断客户端是手机还是PC的2个代码(转)

转载自:http://www.jb51.net/article/48939.htm Javascript 判断客户端是否为 PC 还是手持设备,有时候项目中需要用到,很方便的检测,源生的哦,方法一共有两种 1.第一种: function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", "iPhone", "SymbianOS", "Wi

服务器端如何判断客户端是不是手机

1.来自CSDN 地址:http://blog.csdn.net/andy1219111/article/details/27543391 最近开发我们网站的手机版,采用了这样的模式实现:根据客户端浏览器user agent判断用户浏览器类型,如果用户使用的是手机访问,则给用户展示手机端模板.注意,我们这里pc端和手机端采用的是同一套系统,比如pc端网站为http://aaron.com,手机也访问http://aaron.com,只是跟对浏览器类型向客户端发送不同的页面.废话就到这里,直接上代

基于PHP代码实现判断客户端是否手机访问(转)

function ismobile() {    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))        return true;     //此条摘自TPM智能切换模板引擎,适合TPM开发    if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])        retur

JS判断客户端是手机还是PC

1 function IsPC() { 2 var userAgentInfo = navigator.userAgent; 3 var Agents = ["Android", "iPhone", 4 "SymbianOS", "Windows Phone", 5 "iPad", "iPod"]; 6 var flag = true; 7 for (var v = 0; v <

判断客户端是手机访问还是电脑访问网站(php代码)

function check_wap() { if (isset($_SERVER['HTTP_VIA'])) return true; if (isset($_SERVER['HTTP_X_NOKIA_CONNECTION_MODE'])) return true; if (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) return true; if (strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.

判断客户端是电脑还是手机

用php判断客户端是手机还是电脑?其实很简单,通过浏览器访问网站时,浏览器会向服务器发送UA即(用户代理).不同浏览器或者同一浏览器的不同版本.手机浏览器.电脑浏览器的UA都是不一样的.我们只要写代程序获取这段UA,然后判断UA是什么,然后就可以区分出客户端是手机还是电脑了. function is_mobile(){ //正则表达式,批配不同手机浏览器UA关键词. $regex_match=”/(nokia|iphone|android|motorola|^mot\-|softbank|fom

JS判断客户端是否是iOS或者Android或者ipad(二)

js判断客户端是IPAD和iphone 多了就不说了,直接上代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22     function checkIsIphoneIpad() { var pda_user_agent_list = new Array("iPhone", "iPod", "iPad"/*, "GTB"*/); var pda_app_nam

js判断是否为手机访问

JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的.在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道. 根据userAgent判断是否为手机访问 C# 代码   复制 function checkBrowser(){ var browser={ versions:function(){ var u = navi