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

您的浏览器会将其用户代理发送到您连接的每个网站。我们以前已经写过关于更改浏览器的用户代理的内容--但是到底什么是用户代理呢?

用户代理是向Web服务器标识浏览器和操作系统的“字符串”(即一行文本)。这听起来很简单,但随着时间的推移,用户代理已经变得一团糟。

基础

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

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

检查用户代理

例如,下面是Windows7上Firefox的用户代理:

这个用户代理告诉Web服务器相当多:操作系统是Windows7(代号为Windows NT6.1),是64位版本的Windows(WOW64),浏览器本身是Firefox12。

现在我们来看一下Internet Explorer9的用户代理,它是:

用户代理字符串将浏览器标识为带有三叉戟5呈现引擎的IE 9。然而,您可能会发现一些令人困惑的东西-IE将自己标识为Mozilla。

我们马上回到那个问题上来。首先,我们也来看看Google Chrome的用户代理:

情节变得复杂起来:Chrome假装既是Mozilla又是Safari。要了解原因,我们必须检查用户代理和浏览器的历史。

用户代理字符串Mess

Mosaic是最早的浏览器之一。其用户代理字符串为NCSA_MOSAIC/2.0。后来,Mozilla出现了(后来改名为Netscape),它的用户代理是Mozilla/1.0。Mozilla是一个比Mosaic更高级的浏览器--特别是,它支持框架。Web服务器检查用户代理是否包含单词Mozilla,并将包含框架的页面发送到Mozilla浏览器。Web服务器向其他浏览器发送没有框架的旧页面。

最终,微软的Internet Explorer问世了,它也支持框架。然而,IE不会接收带有框架的网页,因为Web服务器只是将其发送到Mozilla浏览器。为了解决这个问题,微软在他们的用户代理中添加了单词Mozilla,并添加了额外的信息(单词“Compatible”和对IE的引用)。网络服务器很高兴看到Mozilla这个词,并向IE发送了现代网页。后来出现的其他浏览器也做了同样的事情。

最终,一些服务器寻找单词Gecko-Firefox的呈现引擎-并向Gecko浏览器提供与旧浏览器不同的页面。KHTML--最初是在Linux的KDE桌面上为Konquer开发的--添加了“像壁虎一样”的字样,这样他们也可以得到为壁虎设计的现代页面。WebKit是基于KHTML的-当它被开发时,他们添加了WebKit这个词,并保留了原来的“KHTML,Like Gecko”行,以达到兼容的目的。通过这种方式,随着时间的推移,浏览器开发人员不断地向他们的用户代理添加单词。

Web服务器实际上并不关心确切的用户代理字符串是什么-它们只是检查它是否包含特定的单词。

用途

Web服务器将用户代理用于各种目的,包括:

向不同的网络浏览器提供不同的网页。这可以用来做好事-例如,向较旧的浏览器提供更简单的网页-或者用来做坏事,例如,显示“此网页必须在Internet Explorer中查看”的消息。 在不同的操作系统上显示不同的内容-例如,通过在移动设备上显示精简的页面。 收集显示其用户正在使用的浏览器和操作系统的统计信息。如果你曾经看到过浏览器市场份额的统计数据,这就是他们是如何获得的。

网络爬行机器人也使用用户代理。例如,谷歌的网络爬虫程序将自己标识为:

网络服务器可以给予机器人特殊待遇,例如,允许它们通过强制注册屏幕。(是的,这意味着您有时可以通过将用户代理设置为Googlebot来绕过注册屏幕。)

Web服务器还可以使用robots.txt文件向特定的bot(或所有bot)下达命令。例如,网络服务器可以告诉一个特定的机器人离开,或者告诉另一个机器人只索引网站的某些区域。在robots.txt文件中,bot由其用户代理字符串标识。

所有主要浏览器都包含设置自定义用户代理的方法,因此您可以看到Web服务器发送到不同浏览器的内容。例如,将桌面浏览器设置为移动浏览器的用户代理字符串,您将在桌面上看到移动版本的网页。

相关文章