什么是浏览器的用户代理?

image

您的浏览器将其用户代理发送到您连接到的每个网站。 我们已经写了关于更改浏览器的用户代理之前-但究竟什么是用户代理啊?

用户代理是一个“字符串” – 即一行文本 – 标识浏览器和操作系统到Web服务器。 这听起来很简单,但用户代理已经变成一团糟。

基础

当浏览器连接到网站时,它在其HTTP标头中包含一个User-Agent字段。 用户代理字段的内容因浏览器而异。 每个浏览器都有自己的,独特的用户代理。 基本上,用户代理是浏览器向网络服务器说“嗨,我是Windows上的Mozilla Firefox”或“嗨,我是iPhone上的Safari”的一种方式。

Web服务器可以使用此信息为不同的Web浏览器和不同的操作系统提供不同的网页。 例如,网站可以将移动网页发送到移动浏览器,将现代网页发送到现代浏览器,并将“请升级浏览器”消息发送到Internet Explorer 6。

检查用户代理

例如,这里是Firefox的用户代理在Windows 7:

Mozilla / 5.0(Windows NT 6.1; WOW64; rv:12.0)Gecko / 20100101 Firefox / 12.0

image

这个用户代理告诉web服务器相当多:操作系统是Windows 7(代码名称为Windows NT 6.1),它是64位版本的Windows(WOW64),浏览器本身是Firefox 12。

现在让我们来看看Internet Explorer 9的用户代理,它是:

Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)

image

用户代理字符串使用Trident 5呈现引擎​​将浏览器标识为IE 9。 但是,您可能会发现一些混乱 – IE标识为Mozilla。

我们会在一分钟后回来。 首先,让我们来看看Google Chrome的用户代理:

Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 536.5(KHTML,像Gecko)Chrome / 19.0.1084.52 Safari / 536.5

image

情节变厚:Chrome假装是Mozilla和Safari。 为了理解为什么,我们必须检查用户代理和浏览器的历史。

用户代理字符串混乱

Mosaic是第一个浏览器之一。 其用户代理字符串为NCSA_Mosaic / 2.0。 后来,Mozilla来了(后来改名为Netscape),它的用户代理是Mozilla / 1.0。 Mozilla是一个比Mosaic更先进的浏览器 – 特别是它支持框架。 检查Web服务器以查看用户代理是否包含Mozilla并将包含框架的页面发送到Mozilla浏览器。 对于其他浏览器,Web服务器发送没有框架的旧页面。

最后,微软的Internet Explorer也来了,它也支持框架。 但是,IE没有接收带有框架的网页,因为Web服务器刚刚发送这些到Mozilla浏览器。 为了解决这个问题,微软在他们的用户代理中添加了Mozilla这个词,并提供了其他信息(“兼容”和对IE的引用。)Web服务器很高兴看到Mozilla这个词,并发送了IE的现代网页。 后来的其他浏览器做同样的事情。

image

最终,一些服务器寻找Gecko – Firefox的渲染引擎,并为Gecko浏览器提供了不同于旧浏览器的页面。 KHTML – 最初是为Linux KDE桌面上的Konquerer开发的 – 添加了“like Gecko”这样的词,所以他们也会得到为Gecko设计的现代页面。 WebKit基于KHTML – 当它开发时,他们添加了WebKit一词,并保持原始的“KHTML,像Gecko”行为兼容性目的。 这样,浏览器开发人员随着时间的推移不断向他们的用户代理添加词语。

Web服务器真的不在乎什么是确切的用户代理字符串 – 他们只是检查它是否包含一个特定的单词。

用途

Web服务器使用用户代理的各种用途,包括:

  • 将不同的网页投放到不同的网络浏览器。 这可以用于良好 – 例如,为较旧的浏览器提供较简单的网页 – 或恶,例如,显示“此网页必须在Internet Explorer中查看”消息。
  • 向不同的操作系统显示不同的内容 – 例如,在移动设备上显示缩小的页面。
  • 收集显示其用户正在使用的浏览器和操作系统的统计信息。 如果你见到的浏览器市场份额统计 ,这是他们是如何获得的。

网络爬行机器人也使用用户代理。 例如,Google的网络抓取工具将自己标识为:

Googlebot / 2.1(+ http://www.google.com/bot.html)

Web服务器可以给bot提供特殊处理 – 例如,允许它们通过强制注册屏幕。 (是的,这意味着您有时可以通过将用户代理设置为Googlebot来绕过注册屏幕)。

Web服务器还可以使用robots.txt文件向特定机器人(或所有机器人)发出订单。 例如,web服务器可以告诉特定的机器人离开,或者告诉另一个机器人仅仅索引网站的某些区域。 在robots.txt文件中,漫游器由其用户代理字符串标识。

image


所有的主流浏览器包含的方式来设置自定义的用户代理 ,所以你可以看到服务器发送向不同的浏览器是什么网。 例如,将桌面浏览器设置为移动浏览器的用户代理字符串,您将在桌面上看到移动版网页。

赞 (0)
分享到:更多 ()