python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8587|回复: 0

User Agent - HTTP服务器识别OS操作系统 Web浏览器版本的用户代理

[复制链接]

185

主题

204

帖子

1175

积分

工程师

Rank: 5Rank: 5

金钱
759
金币
15
威望
0
贡献
0
发表于 2018-6-6 04:50:00 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
User Agent - HTTP服务器识别OS操作系统 Web浏览器版本的用户代理

User-Agent 英文简称 UA,中文译为 “用户代理”。User-Agent 是 HTTP 协议的一部分,属于请求头域。


User-Agent 是向访问网站提供所用浏览器类型及版本、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件、等信息的一特殊字符串头标识。


User-Agent 字符串在每次浏览器进行 HTTP 请求时,会被发送到服务器!


某些网站常通过判断 User-Agent 来给不同操作系统、不同浏览器发送不同页面;因此,可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 User-Agent 可绕过此种检测。


user-agent 作用

01、统计用户浏览器使用情况

有些浏览器说被多少人使用了,实际上就可通过判断每个IP 的 UA 来确定这个 IP 是用什么浏览器访问的,以得到使用量的数据。


02、根据用户使用浏览器的不同,显示不同的排版从而为用户提供更好的体验

有些网站会根据这个来调整打开网站的类型,如是手机就打开 wap,非手机的就打开 pc 常规页面。用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的 UA 来判断的。


03、伪装 user agent 以回避某些侦测特定浏览器才能读取的网站

如使用 Firefox 浏览器插件 User agent switcher,用户可轻松在不同 UA 之间切换,把自己伪装成其他浏览器。这样就可在 PC 上预览 WAP 或移动格式的网页,譬如:专为 iPhone 设计的页面。


软件仓库

https://github.com/digitser

https://digitser.sourceforge.io/

https://pan.baidu.com/s/1TV70__Be1ta0ney1-tudFQ


自动 "批量" 采集下载 "静态 动态网站" 内容的 "数据采集" 工具

http://collect.digitser.cn/

http://forum.digitser.cn/thread-2253-1-1.html


user-agent 值

ASP.NET 使用 Request.Header["User-Agent"] 或 Request.UserAgent


Java 使用 request.getHeader(”User-Agent”)


Python 使用 Request.headers.get("User-agent")


PHP 使用:$_SERVER[HTTP_USER_AGENT];


JS 使用 navigator.userAgent


User-Agent 字符串范例
渲染引擎
浏览器
User-Agent
说明
备注
GeckoFirefoxMozilla/MozillaVersion (Platform; Encryption; OS-or-CPU; Language; PrereleaseVersion)Gecko/GeckoVersion ApplicationProduct/ApplicationProductVersion
Gecko 首次开发是作为 Mozilla 浏览器 Netscape 6 的一部分。Netscape 6 的user-agent 字串结构是面向未来的,新版本反应出从 4.x 版本的简单变得较为复杂。
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1Windows XP 中的 Netscape 6.21Mozilla 版本 5.0 从首款 Gecko 发布后就一直未变,且以后有可能也不会变。
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11在 Windows XP 中的 Firefox 2.0.0.11
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1b2) Gecko/20060823 SeaMonkey/1.1a在 Linux 中的 SeaMonkey 1.1a
Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.6) Gecko/20070809 Camino/1.5.1Mac OS X 中的 Camino 1.5.1
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0dts 运行在 Windows 7 64 位上的 Firefox 47.0
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0dts 运行在 Windows 7 64 位上的 Firefox 47.0 64位版
WebKitSafariMozilla/5.0 (Platform; Encryption; OS-or-CPU; Language) AppleWebKit/AppleWebKitVersion (KHTML, like Gecko) Safari/SafariVersion2003 年 Apple 宣布发布首款自主开发的 web 浏览器:Safari。WebKit 是 Linux 中 web 浏览器 Konqueror 呈现引擎 KHTML 的一个分支,几年后,WebKit 的开源吸引了呈现引擎的开发人员。
这款新浏览器和呈现引擎的开发人员也遇到了曾经 IE 3.0 类似的问题:怎样才能溶入主流而不被踢出局?答案是:在 user-agent 字串中放详尽的信息,以骗取网站的信任使它与其它流行浏览器兼容。
凡是基于 WebKit 的浏览器都将自己伪装成 Mozilla 5.0,与基于 Gecko 浏览器完全一样。
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1既有 Apple WebKit 版本,也有 Safari 版本。Safari 版本是浏览器构建版本号 (build number),Safari 1.25 在 user-agent 字串中号为 125.1。(KHTML, like Gecko) 在 Safari 1.0 预览版本中就有了,这是最耐人寻味又饱受诟病。
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5Apple 的野心是为让开发人员把 Safari 当成 Gecko,所以采取了当初微软 IE user-agent 的类似做法:Safari 是兼容 Mozilla 的,否则 Safari 用户会认为用的浏览器不受支持。
而其它基于 WebKit 的浏览器与 Safari 不同的是,没有上面说的这个情况,所以检测断定浏览器是否基于 WebKit 比看有没有明确标 Safari 更有用。
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-cn) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) Version/5.1.3 Safari/534.34
dts 运行在 Windows 7 64 位上的 safari 5.1.3
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/534.34 (KHTML, like Gecko) Version/5.1.3 Safari/534.34
dts 运行在 Windows 7 64 位上的 safari 5.1.3 64位版
KHTMLKonquerorMozilla/5.0 (compatible; Konqueror/Version; OS-or-CPU)Konqueror 3.2Konqueror 是款在 KDE Linux 桌面环境中的浏览器,基于 KHTML 开源呈现引擎。它只发布了 Linux 版本,但拥有活跃用户群。为了兼容性最大化,user-agent 字串格式也紧跟 IE 后尘。
Mozilla/5.0 (compatible; Konqueror/Version; OS-or-CPU) KHTML/KHTMLVersion (like Gecko)为与 WebKit user-agent 字串变化保持一致,它将 KHTML 作为它的标识。
Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.0 (like Gecko)Konqueror 和 KHTML 的版本号比较一致,唯一的区别就是这点不同,比如 Konquerer 3.5、KHTML 3.5.1。
WebKitChromeMozilla/5.0 (Platform; Encryption; OS-or-CPU; Language) AppleWebKit/AppleWebKitVersion (KHTML, like Gecko) Chrome/ChromeVersion Safari/SafariVersionChrome 0.2Google Chrome 浏览器以 WebKit 作为呈现引擎,JavaScript 引擎却用了另一种。最初发布版本是 0.2,它的 user-agent 字串格式是在 webKit 信息的基础上增加一些信息。
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
dts 运行在 Windows 7 64 位上的 Chrome 41.0.2228.0
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36dts 运行在 Windows 7 64 位上的 Chrome 41.0.2228.0 64位版

OperaOpera/Version (OS-or-CPU; Encryption) [Language]Opera 8.0 之前版本Opera 浏览器默认 user-agent 字串是现代浏览器中最合理的 ── 正确的标识了它自己及其版本。
Opera/7.54 (Windows NT 5.1; U) [en]Windows XP 中 Opera 7.54
Opera/Version (OS-or-CPU; Encryption; Language)
Opera 8 把 user-agent 字串的语言部分移到了括号内。
Opera/8.0 (Windows NT 5.1; U; en)在 Windows XP 中 Opera 8

Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50
前一字串将 Opera 9.5 标识为 Firefox 2。后一字串将 Opera 9.5 标识为 IE 6,在两个字串中都带有 Opera 版本信息。虽然这种方式是作为 Firefox 或 IE 打开的,但也能识别出 Opera。另一种方法则是浏览器 user-agent 字串标识伪装成 Firefox 或 IE,同时也找不到“Opera”字串及其版本信息。这样从字面上去区分 Opera 浏览器便成了“不可能完成的任务”。当时 Opera 做为主流浏览器之一,它的 user-agent 字串是唯一使用产品名称和版本完全真实的标识了它自己。但是由于大量的浏览器嗅探代码在 Internet 上像蝗虫飞过般只吃标 Mozilla 产品名的user-agent 字串,造成了 Opera 的user-agent 字串发生了完全的改变。
Opera 9 user-agent 字串有 2 种修改方式:一种方式是将自己标识为 Firefox 或 IE 浏览器。在这种方式下,user-agent 字串与 Firefox 或 IE 的几乎一样,只不过末尾附加了“Opera”及版本号。
06TridentIEMozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) IE 10 运行于 32 位 Win8

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)IE 10 运行于 64 位 Win8
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)"Touch" 表示 IE 10 运行于支持触摸的 Win8 系统

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)dts 的 IE 10 运行于 32 位 Win7
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Win64; x64; Trident/6.0)dts 的 IE 10 运行于 64 位 Win7

user-agent 字串史可说明曾对 user-agent 嗅探说不的原因:


IE 想要将自己识别为 Netscape 4,Konqueror 和 WebKit 想要识别为 Firefox,Chrome 想要识别为 Safari。这样使得除 Opera 外所有浏览器的user-agent 嗅探区别很小,想要从一堆茫茫浏览器海洋中找出有用的标识太少了。关于嗅探要记住:一款浏览器与其它浏览器是兼容的,这样造成了不能完全准确断定是哪款浏览器。
  

比如 Chrome ,它声称任何可在 Safari 3 访问的网站 Chrome 也都可访问,但是对检测 Chrome 没有一点用。为了浏览器的兼容 ── 这便是这个声明的理由。

浏览器 User-Agent 字符串格式

不同浏览器会有所不同,但大体格式如下:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息


操作系统标识
操作系统类型
操作系统标识
说明
备注
FreeBSDX11; FreeBSD (version no.) i386
X11; FreeBSD (version no.) AMD64
LinuxX11; Linux ppc
X11; Linux ppc64
X11; Linux i686
X11; Linux x86_64
MacMacintosh; PPC Mac OS X
Macintosh; Intel Mac OS X
SolarisX11; SunOS i86pc
X11; SunOS sun4u
WindowsWindows NT 10.0对应操作系统 windows 10
Windows NT 6.3对应操作系统 windows 8.1
Windows NT 6.2对应操作系统 windows 8
Windows NT 6.1对应操作系统 windows 7
Windows NT 6.0对应操作系统 windows vista
Windows NT 5.2对应操作系统 windows 2003
Windows NT 5.1对应操作系统 windows xp
Windows NT 5.0对应操作系统 windows 2000
Windows ME
Windows 98
Windows 95

加密等级标识
加密等级标识
说明
备注
N表示无安全加密
I表示弱安全加密
U表示强安全加密

浏览器语言
浏览器
浏览器语言
说明
备注
IEen
英语
IE-->工具-->Internet 选项-->外观-->语言
en-US
英语(美国)
zh
中文
zh-CN
中文(简体,中国)
Firefox
en英语Firefox-->工具-->选项-->内容-->语言
en-us英语/美国
zh中文
zh-cn中文/中国
Chrome

Chrome-->设置-->高级设置-->语言
Opera



渲染引擎标识

浏览器若使用 Presto 渲染引擎,格式为:Presto/版本号


渲染引擎标识
浏览器
渲染引擎标识
备注
IE
Trident/4.0
IE  8.0
Trident/5.0
IE  9.0
Trident/6.0
IE 10.0
FirefoxGecko
Chrome
Opera

浏览器版本信息

浏览器真实版本信息,格式为:Version/版本号


浏览器版本信息
浏览器
浏览器版本信息
备注
IE
MSIE 9.0IE 9.0
MSIE 10.0IE 10.0
FirefoxFirefox/39.0Firefox 39.0
Chrome

Opera


User-Agent 历史
时间
事件
user-agent
说明
备注
1993 年NCSA 发布首款 web 浏览器 Mosaic。Mosaic/0.9斜杠前是产品名称 (可能会显示为 NCSA Mosaic 或其它类似字串),斜杠后是产品版本号
虽然当时,Mosaic 对操作系统和平台是有依赖性的,但基本格式还是很简单明了。
1995 年Netscape Communications 开发出了 web 浏览器 Mozilla (当时号称 “Mosaic 杀手”)。Mozilla/Version [Language] (Platform; Encryption) Netscapeuser-agent 字串前半部分使用了产品名称和产品版本,但后面增加了下列信息:Language:应用程序语言;Platform:操作系统/平台;Encryption:安全加密类型;
Encryption 值可能是 U (128 位加密)、I (40 位加密)、N (没加密)。
首次公开发行 Netscape Navigator 2。Mozilla/2.02 [fr] (WinNT; I)Netscape Navigator 2.02 、法语 、Windows NT 、40位加密。
在当时,通过 user-agent 字串中的产品名称,可正确判断使用的是哪种 web 浏览器。
1996年发布 Netscape Navigator 3
Mozilla/Version (Platform; Encryption [; OS-or-CPU description])user-agent 字串去掉了语言部分,多放了个操作系统或 CPU 的可选信息。
Netscape Navigator 3 远远超过 Mosaic,成为当时最流行的 web 浏览器。
Mozilla/3.0 (Win95; U)Netscape Navigator 3 、Windows 95 、128 位加密。
在 Windows 系统,user-agent 字串可能不会显示 OS 或 CPU 的信息。
1996年Netscape Navigator 3 发布不久,微软发布 IE 3Mozilla/2.0 (compatible; MSIE Version; Operating System)
Netscape 是当时的首选浏览器,大多数服务器在加载页面前会检查 user-agent 是否为该款浏览器。IE 如不兼容 Netscape user-agent 字串,使用 IE 的用户就打不开这些页面。
Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)Windows 95 中的 IE 3.02
由于当时的浏览器嗅探只查 user-agent 字串中的产品名称部分,结果 IE 摇身一变被识别成了 Mozilla,伪装成了 Netscape Navigator。从此以后,浏览器真正的版本埋没在了字串的中间。
1997年Netscape Communicator 4 发布(名称中 Navigator 换成了 Communicator)Mozilla/Version (Platform; Encryption [; OS-or-CPU description])
user-agent 字串格式与 3 版一致。
Mozilla/4.0 (Win98; I)Windows 98 中 4 版的 user-agent 字串
Netscape 浏览器在更新时,版本也相应增加。
Mozilla/4.79 (Win98; I)
1997年微软发布 IE 4
Mozilla/4.0 (compatible; MSIE Version; Operating System)
Mozilla/4.0 (compatible; MSIE 4.0; Windows 98) Windows 98 中 IE 4 版的 user-agent 字串Mozilla 版本与 IE 实际版本一致,这样就可识别第 4 代浏览器。
Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC) IE 4.5 只发布 Mac 平台,虽然 Mozilla 版本仍是 4 此后,IE 版本一直到 7 都沿用此模式。
2009年微软发布 IE 8
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)新增渲染引擎标识,这样 IE8 以 MSIE 7.0 兼容模式运行时,Trident 版本保持不变,而原先 IE7 的 user-agent 字串不包括 Trident 版本。这样可区分 IE7 与 IE8 运行的兼容模式。

"长按二维码" 或 "扫一扫" 关注 "德云社区" 微信公众号

版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2024-11-23 07:49 , Processed in 0.031985 second(s), 27 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表