用户代理识别——wiki中的解释
当一个软件代理运行于一个网络协议时,它通常通过向它的 operating peer 提交一个特征识别的字符串以标识它自己,它的应用类型,操作系统,软件供应商,或者软件修订版本。在 HTTP, SIP 以及 SMTP/NNTP[2] 协议中,这个识别是通过 user-agent 头字段传送的。网络机器人,例如网络抓取工具,通常也包括一个 URL 以及/或一个电子邮件地址以便网站管理员可以联系 bot 的操纵者。
在 HTTP 中,User-Agent 字符串通常被用於内容协商,而原始服务器为该响应选择适当的内容或操作参数。例如,User-Agent 字符串可能被网络服务器用以基于特定版本的客户端软件的已知功能选择适当的变体。
用户代理字符串是网络抓取工具通过使用 robots.txt 文件以从对网站的某些部分的访问中被排除的标准之一。
另外的解释
- 在http协议里,头信息中有一个 User-Agent,它的作用是告诉服务器,用户客户端是什么浏览器,以及操作系统的信息的。在某些特殊的情况下,服务器根据浏览器的不同类型,输出不 同的内容。大概在三四年前,很多网站都只显示给IE看,所以当时的 opera 浏览器还特别做了一个功能,可以把它的 User-Agent 换成 IE 的。所以 user-agent 是非常不可靠的,原因就是它是客户端自己决定并发送给服务器。
- 其实简单的说User-Agent就是客户端浏览器等应用程序使用的一种特殊的网络协议,在每次浏览器(邮件客户端/搜索引擎蜘蛛)进行 HTTP 请求时发送到服务器,服务器就知道了用户是使用什么浏览器(邮件客户端/搜索引擎蜘蛛)来访问的
- UA:用户代理(User Agent).UA是SIP协议中的一个逻辑实体,SIP是一个信令协议,代理的含义为代替用户处理信令协议,简单说就是替用户收发信令信息.其物理实体可以是SIP终端(如SIP软,硬电话终端,SIP多媒体终端等),基于SIP的接入网元,IAD以及SIP网络中的其它网元等设备.除此以外SIP系统中用来处理信令的还有代理服务器(PROXY),重定向服务器(RS)等逻辑实体.
- UA简单是指用户的手机信息。通过UA,可以知道用户的手机类型,是moto的,还是索爱的。是moto哪一款的,都可以明白。
根据UA,可以向用户提供适合于他的机器的相关服务,如大小合适的图片,格式准确的铃声等。
格式
用户代理字符串的格式目前被RFC 2616 (HTTP/1.1)的 Section 14.43 所指定。在 HTTP 中,用户代理字符串的格式是产品标记(关键字)和可选的注释所组成的一个列表。例如如果你的产品叫做 WikiBrowser, 你的用户代理字符串就可能是 WikiBrowser/1.0 Gecko/1.0。「最重要的」产品组件被最先列出。这个字符串的部分如下所示:
- 产品名称和版本(WikiBrowser/1.0)
- 排版引擎和版本(Gecko/1.0)。在这种情况下,这指示了排版引擎和版本。
但不幸的是,在浏览器大战期间,很多网络服务器被配置为只给被识别为某些版本的 Mozilla 的客户端发送需要高级功能的网页。
由于这个原因,绝大多数网页浏览器使用的 User-Agent 值如下:Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]}}
。例如,iPad 上的 Safari 使用的就是下述:
Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
- ozilla/5.0:先前用以指示与 Mozilla 排版引擎的兼容性
- (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us):浏览器所运行于的系统的详细信息
- AppleWebKit/531.21.10:浏览器所使用的平台
- (KHTML, like Gecko):浏览器平台的细节
- Mobile/7B405:被浏览器用于指示特定的直接由浏览器提供或者通过第三方提供的可用的增强功能。这方面的一个实例是 Microsoft Live Meeting,它注册了一个扩展以使 Live Meeting 服务知道该软件是否已经安装上,这意味着它可以为加入会议提供一个简化的体验。
通过手机型号查找相应UA信息工具
http://www.tera-wurfl.com/explore/search.php?action=browse
输入手机型号,然后点击“search device”,即可查找到相应机型的UA信息啦!实乃移动开发利器,居家旅行必备呀~
修改浏览器的User-Agent来伪装你的浏览器和操作系统
既然是人为规定的协议,那么就是说不管什么浏览器,默认的UA都是可以更改的。有时候为了达到一些不可告人的目的,我就经常需要更改一下UA的设置,比如伪装一下浏览器类型,比如把浏览器伪装成手机上网。
得到HTTP_USER_AGENT 的方法很简单,比如php代码:
<?php print_r($_SERVER); ?> <?php print_r($_SERVER['HTTP_USER_AGENT']); ?>
这两种都可以得到User-Agents和IP等信息,最好配合正则表达式,对信息进行筛选剔除。
-------------- User-Agents列表-------------
Internet Explorer 6
Internet Explorer 7
Internet Explorer 8
Firefox
Chrome
Safari
Netscape
Opera
Maxthon
360SE
OmniWeb
更多的User-Agents信息尽在useragents.xml
有了这个文件中的信息,什么样的浏览器和操作系系统都能伪装出来。
使用User-Agents的方法:
FireFox:[推荐使用User-Agent switcher 这个火狐扩展]
地址栏键入:about:config 回车
设置:general.useragent.override-->自定义的 UA 信息 。
Chrome
启动EXE图标属性中加上启动参数:--user-agent="UA信息" 即可。
Safari
菜单栏->Edit->Preferences->Advanced->Show Develop menu in menu bar;
菜单栏->Develop->User-Agent->UA信息。
Maxthon
工具栏->工具->遨游设置中心->高级选项->自定义UA信息。
Opera
地址栏键入:opera:config 回车
设置:User-Agent->自定义ID 0—5
注: [0 Default 1 Opera 2 Mozilla, Opera detectable 3 Internet Explorer, Opera detectable 4 Mozilla, Opera hidden 5 Internet Explorer, Opera hidden ]
iPhone
替换 /System/Library/Frameworks/WebKit.framework/WebKit 这个文件的 Mozilla/5.0字符串 为自定义UA信息
IE浏览器的设置需要修改注册表
User-Agent在注册表的位置
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\User-Agent\Post Platform] 下,新建字符串值,内容留空,名字为你想在 User-Agent 中加入的字符,这里以 "motorolarokre2"为例。修改注册表对应的 REG 文件如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\User-Agent\Post Platform]
"motorolarokre2"=""
修改后重启IE浏览器即可。
IE的user-agent取值,下面是下列地址的组合+一些默认值
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User-Agent\Post Platform
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User-Agent\Post Platform
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User-Agent\Post Platform
IE8的User-Agents:
IE8 on Windows Vista (兼容浏览)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)
IE8 on Windows Vista
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)
IE8 on Windows 7
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)
64-bit IE on 64-bit Windows 7:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)
32-bit IE on 64-bit Windows 7:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)
在IE9中已经可以直接通过开发人员工具来对浏览器的 User-Agent 信息进行修改和切换。方法如下:
打开IE9,按下 F12 键,打开开发人员工具以后,单击“工具”,选择“更改用户代理字符串”,从列表中选择想要使用的浏览器 User-Agent。
我们可以通过打开下面的检测网页,来检测浏览器当前的 User-Agent 字符串信息:
http://www.iefans.net/wp-demo/User-Agent.html
该列表中为我们提供了IE6/IE7/IE8等选项,同时还提供了Chrome/Firefox/Opera主流浏览器的选项,如果这里没有你想要的浏览器 User-Agent,你也可以自定义目标浏览器的 User-Agent 添加至该列表中。
单击列表中的“自定义”,在打开的窗口中,“友好名称”中输入 User-Agent 相应的名称,“用户代理字符串”中输入 User-Agent 字符串信息,在单击“添加”即可。
现在便可以在列表中选择添加的自定义浏览器 User-Agent 代理字符串了。
为了方便大家进行修改,useragents.xml 中为大家提供了常见浏览器的 User-Agent 字符串列表。
通过修改User-Agent,你还可以完美的伪装:操作系统、浏览器、蜘蛛、邮件客户端、链接检查、分析器、RSS 阅读器等客户端的信息。