根据userAgent判断客户端是否手机、操作系统、浏览器等信息
来源:互联网 发布:windows 安全配置基线 编辑:程序博客网 时间:2024/05/16 11:25
User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。UA可以进行伪装。(wiki)
分析浏览器的User-Agent 我们可以收集客户端相关信息:是否手机、操作系统、浏览器等信息。
效果:http://1.billo.sinaapp.com/
以下为获取json格式ua的函数
ua为字符串格式的 User-Agent 字段
import urllibimport urllib2import jsondef 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-8import tornado.webimport sysimport urllibimport urllib2import jsonimport os.pathfrom tornado.httpclient import AsyncHTTPClientclass 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 jsettings = { "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)
- 根据userAgent判断客户端是否手机、操作系统、浏览器等信息
- 根据userAgent判断客户端是否手机、操作系统、浏览器等信息
- java userAgent 判断是否手机浏览器
- 根据UserAgent判断手机浏览器系统,以及对其操作
- javascript根据浏览器userAgent判断浏览器类型
- 通过判断浏览器的userAgent,用正则来判断手机是否是ios(苹果)和Android(安卓)客户端
- 根据userAgent值的特性判断客户端设备及浏览器类型
- 根据userAgent值的特性判断客户端设备及浏览器类型
- 通过userAgent判断手机浏览器类型
- 通过userAgent判断手机浏览器类型
- 通过userAgent判断手机浏览器类型
- 通过userAgent判断手机浏览器类型
- js使用userAgent判断浏览器信息
- asp如何判断浏览器类别 userAgent信息
- JavaScript Navigtor 获取客户端信息(浏览器 操作系统等)
- Servlet-request获取客户端ip地址,操作系统,浏览器等信息
- 浏览器网页判断手机是否安装IOS/Android客户端程序
- 服务器端判断客户端是否是手机端浏览器
- 无向图邻接矩阵
- 运营商网络采用SDN所面临的挑战(二)
- 第十三周项目1-4:数组中元素的删除
- Mac电脑下搭建Apache web服务器
- 第13周项目5-字符串操作(1)-3
- 根据userAgent判断客户端是否手机、操作系统、浏览器等信息
- [翻译]十条有用的 GO 技术
- JVM必备指南
- Vim命令总结
- dom4j读写xml文件
- UIImage任意形状的不规则裁剪
- 如何让Extjs弹出window窗口后背景窗口变灰(即不可编辑)
- JAVA中split()关于.的问题
- installshield2014激活步骤