2013-02-25 87 views
19

发送HTTP请求时,IE将User-Agent变量发送到服务器。的可能值(由网络调试器所看到):HTTP请求标头:UserAgent变量

的User-Agent:Mozilla的/5.0(兼容MSIE 9.0; Windows NT的6.1; WOW64; 三叉戟/ 5.0)

我的问题: IE(或任何其他浏览器)如何找出这个变量? 我在问这是因为在访问某些网站时,这个变量与其他变量不同,我想追踪变化来自哪里。 “兼容性设置”是一种选择,但我认为还有更多。

任何人都可以解释这个变量的过程?

+4

首先,这是一个请求头,而不是响应头。这意味着它从浏览器到服务器,而不是从服务器到浏览器。比方说,每个浏览器标识自己的服务器。 – Rolice 2013-03-04 22:24:46

回答

24

用户代理出现在HTTP请求标题中,而不是HTTP响应。通常,请求从浏览器发送到Web应用程序。所以用户代理变量由浏览器填充。不同的浏览器会用不同的值填充该字段。

关于IE如何找到这些变量,我想你问的是User-Agent Registry Keys

您也可以通过将值添加到以下注册表项中来覆盖用户代理字符串的某些标记。

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) 
    SOFTWARE 
     Microsoft 
     Windows 
      CurrentVersion 
       Internet Settings 
        5.0 
        User Agent 
         (default) = "Mozilla/4.0" 
         Compatible = "compatible" 
         Platform = "Windows NT 5.1" 
         Version = "MSIE 6.0" 
         Pre Platform 
          Token = Value 
         Post Platform 
          Token = Value 

用户代理密钥的默认值替换用户代理字符串中报告的应用程序名称和应用程序版本令牌。请注意,前七个字符用于应用程序名称,其余字符指定应用程序版本令牌。

Compatible,Platform和Version值替换用户代理字符串中相应的标记。

通过使用注册表编辑器在Pre-Platform密钥或Post-Platform密钥下创建新的字符串值,可以将额外的令牌添加到用户代理字符串中。值名称应该是完整的标记;值数据被忽略。添加到预平台密钥中的令牌出现在最终用户代理字符串中的平台令牌之前。添加到Post-Platform密钥中的令牌出现在最终用户代理字符串中的平台令牌之后。 Pre-Platform键或Post-Platform键中的多个令牌以不可预知的顺序显示。

+0

如何删除用户代理上的Trident/6.0,仍然无法找到2周 – user198989 2014-11-07 06:43:03

5

Wikipedia article上用户代理指出:

的用户代理字符串格式目前由RFC 2616(HTTP/1.1)的用户代理字符串的HTTP格式是第14.43 指定 包含可选注释的产品标记(关键字)列表。

因此,我建议你阅读RFC 2616 section一下:

14.43的User-Agent

用户代理请求头字段包含有关 用户代理发起请求信息。这是为了统计目的, 协议违反的跟踪,以及为了定制响应以避免特定用户的代理限制,自动识别用户代理 。用户代理应该包括这个字段
请求。该字段可以包含多个产品标记(3.8节) 以及标识代理的注释以及构成用户代理的重要部分的任何子产品。按照惯例,产品标记 按照它们对于识别
申请的重要性顺序列出。

User-Agent  = "User-Agent" ":" 1*(product | comment) 

实施例:下面

User-Agent: CERN-LineMode/2.15 libwww/2.17b3 

关于产品的4.8节令牌状态:

3.8产品令牌

产品令牌被用来允许通信的应用程序,以
通过软件名称和版本标识自己。大多数使用
产品标记的字段还允许将应用程序的重要部分
的子产品列出,并以空格分隔。通过
惯例,产品按照它们的重要性
的顺序列出以用于识别应用。

product   = token ["/" product-version] 
    product-version = token 

实例:

User-Agent: CERN-LineMode/2.15 libwww/2.17b3 
    Server: Apache/0.8.4 

产品令牌应该短和对点。他们不得是用于广告或其他非必要信息的
。虽然任何 令牌字符可能出现在产品的版本,此令牌应该
只能用于一个版本标识符(即,
同一产品的连续版本只应在的 产品价值的产品的版本的部分不同)。

所以根据RFC 2616,用户代理的内容取决于浏览器。例如,下面是Mozilla Firefox如何构建其用户代理: https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference