浏览器的用户代理(User-Agent)

来源:互联网 发布:网络上砌砖的美女 编辑:程序博客网 时间:2024/06/08 10:22

最近在学习网络爬虫的东西,使用Jsoup来解析html文档,在发出http请求的过程中需要配置用户代理这一属性,所以想具体了解一下。虽然已接触javaweb开发两年了,对http协议头也有一定的了解,但也只是停留在表面。下面转载一篇文章,希望大家共同学习。原文链接:http://blog.csdn.net/w6299702/article/details/41081225


用户代理(User Agent)是用来表明浏览用户的身份,让网页开发者可以得知访问终端的信息。根据不同的终端发送不同的显示内容,例如桌面版和移动版发送不同的网页内容以适应屏幕和操作系统的差别(即响应式网页的理解),或者是因为不同的浏览器支持的标准不一样,这样做的目的当然是为了避免浏览器不支持的功能以及获得更好的用户体验。
随着浏览器市场的竞争愈加激烈,网页开发者会根据最流行的浏览器,设计一个用户体验最好的网站。这对其他浏览器来说是一种打击, 所以他们也会很快完善自身的缺陷,希望可以支持这些用户体验好的网页效果。
最初是 Mozilla Firefox 浏览器设置了自己的用户代理字符串,例如“Mozilla/1.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101Firefox/4.0.1”,此字符串表明这是一个 Windows 版的使用 Gecko 引擎(火狐浏览器内核)的火狐浏览器。
随后IE发现自己的展示的网页效果没有Firefox丰富,于是发布了兼容Firefox的User Agent,看一下IE 的用户代理设置就能明白——“Mozilla/4.0 (compatible;MSIE 7.0; Windows NT 6.0)”。这个字符串的含义是什么呢?它表明这是一个可以和 Mozilla 兼 容的 Windows 版 IE7 浏览器。这样,内容提供商会根据“Mozilla”字符串信息,将发 送给 Firefox 浏览器的内容也发送给 IE 浏览器,因为在他们看来,这些都是“Mozilla” 的浏览器。

 此后,浏览器市场,越加竞争激烈,为了相互兼容。苹果的 Safari 浏览器也设 置了类似的代理,但是该浏览器额外加入了 AppleWebKit、Safari 等信息,随着它的 流行(特别是移动领域),Chrome 等浏览器除了包含 Mozilla 之外,还添加了 Safari 浏览器的那些标志信息,导致它的用户代理字符串越来越长。

看一下Chrome的User-Agent

chrome-agent
这里可以看出来,该Chrome是MAC的发布版,采用了兼容了Mozilla,Safari,内核兼容AppleWebkit和Gecko

1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36

看一下火狐的User-Agent

firefox-agent
可以看出来,该Firefox为Windows平台的发布版,内核为Firefox的自家内核Gecko

1
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0

看一下Mac上的Safari

safari-agent
看出来,兼容了Mozilla,为Mac系统的发布版,采用自家的Webkit内核(Apple)

1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14

最后是IE的User-Agent

ie-agent
看出来,兼容了Mozilla,采用兼容模式的IE10,采用自家的Trident内核

1
User-Agent:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)

模拟移动设备

我们这里可以模拟一个移动设备来查看一下,显示效果,模拟设备,Galaxy Note II ,通过该设备向服务端发送请求

请求标头,

1
User-Agent:Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

mobile-agent

由于网页已经经过移动设备的显示处理,所以,出现了宽度自适应的显示界面。

一切这些繁琐的User-Agent,都是为了更好的网页内容体验。 从上面几个主流浏览器,可以看出,因为某种浏览器的流行,很多网页内容提供商和网站需要根据流行的浏览器来定制内容,当后来者需要相同内容的时候,就只能是通过这些用户代理的信息来模仿获得。