HTTP请求标头:UserAgent变量

Poe*_*HaH 23 user-agent http-headers

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

User-Agent:Mozilla /5.0(兼容MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

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

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

Sta*_*kER 28

User-Agent出现在HTTP请求标头中,而不是HTTP响应标头.通常,请求从浏览器发送到Web应用程序.因此,用户代理变量由浏览器填充.不同的浏览器会使用不同的值填充此字段.

关于IE如何找到这些变量,我想您正在询问用户代理注册表键.

您还可以通过向以下注册表项添加值来覆盖用户代理字符串的某些标记.

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
Run Code Online (Sandbox Code Playgroud)

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

Compatible,Platform和Version值替换user-agent字符串中的相应标记.

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


Bgi*_*Bgi 6

维基百科的文章对用户代理指出:

User-Agent字符串格式当前由RFC 2616的第14.43节(HTTP/1.1)指定.HTTP中User-Agent字符串的格式是带有可选注释的产品令牌(关键字)列表.

所以我建议你阅读RFC 2616部分:

14.43用户代理

User-Agent请求标头字段包含有关发起请求的用户代理的信息.这是出于统计目的,跟踪协议违规以及自动识别用户代理以便定制响应以避免特定的用户
代理限制.用户代理应该包含带有
请求的字段.该字段可以包含多个产品令牌(第3.8节)和标识代理的注释以及构成
用户代理重要部分的任何子产品.按照惯例,产品令牌按其对于识别
应用程序的重要性的顺序列出.

   User-Agent     = "User-Agent" ":" 1*( product | comment )
Run Code Online (Sandbox Code Playgroud)

例:

   User-Agent: CERN-LineMode/2.15 libwww/2.17b3
Run Code Online (Sandbox Code Playgroud)

关于产品令牌的4.8节说明如下:

3.8产品代币

产品令牌用于允许通信应用程序
通过软件名称和版本来标识自己.使用
产品令牌的大多数字段还允许
列出构成应用程序重要部分的子产品,由空格分隔.按照
惯例,产品按其
对于识别应用程序的重要性的顺序列出.

   product         = token ["/" product-version]
   product-version = token
Run Code Online (Sandbox Code Playgroud)

例子:

   User-Agent: CERN-LineMode/2.15 libwww/2.17b3
   Server: Apache/0.8.4
Run Code Online (Sandbox Code Playgroud)

产品代币应该简短而重要.它们不得
用于广告或其他非必要信息.虽然任何标记字符可能出现在产品版本中,但此标记应该
仅用于版本标识符(即,
同一产品的连续版本应该只在产品值的产品版本部分中有所不同).

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