存储用户代理有什么意义?

What's the point of storing the user agent?

到目前为止,在记录用户登录时,我总是在已经解析的信息(如浏览器、版本、os 等)之外存储完整的用户代理。用户代理通常只是 table.

中的一个 TEXT 字段

在实施另一个类似的事情时,我问自己:这样做的意义何在?显然,用户代理在任何情况下都可以很容易地被操纵,而且唯一相关的信息(浏览器、版本和操作系统)无论如何都已经被解析并单独存储。

除了回溯无论如何都可能被伪造的数据之外,仍然存储它是否有一些实际好处?用户代理包含哪些其他相关信息来证明用于存储它的(多年来,相当大的)数据量?

当然我意识到用户代理包含的不仅仅是浏览器规范 - 但您真的有多少次需要回过头来分析用户代理本身?

澄清一下:我说的是为什么要在解析 "relevant" 信息后存储 raw 用户代理字符串的原因它的(浏览器,os,等等)-在那之后用户代理的意义是什么?

用户代理字符串包含有关环境的信息,包括操作系统和浏览器。这是我经常检查的东西。存储它有两个主要原因。

  • 如果您正在跟进错误报告或错误,那么这 信息对于确定发生了什么是有用的,甚至是必不可少的 wrong - 想象一下试图找到一个只发生在 IE8 上的错误 没有用户代理!此信息还可以帮助您确定错误修复的优先级。在修复 7% 的环境中存在的问题之前,您需要修复 93% 的环境中存在的问题。

  • 其次,它提供了非常有用的用户个人资料统计信息。您可能只想支持超过特定百分比用户群的环境。例如,如果您正在设计软件的新版本,并且在检查您的用户代理日志时发现没有人使用 IE,那么您可能不会为 IE 优化或设计。

您似乎担心用户代理字符串可能被伪造。虽然这是可能的,但除非有某些特定原因有人可能会在您的应用程序中这样做,否则担心它似乎相当偏执。不过,您提出了一个很好的观点,要记住哪些信息可能是伪造的。

更新: 我明白你的意思,事实上,在我最近实现的日志记录中,由于数据开销,我删除了解析的字符串。同时存储原始字符串和解析后的字符串没有什么意义。这样做的唯一真正原因是使查询日志稍微容易一些,这对我来说不是一个足够好的理由。我个人存储了整个原始用户代理,这意味着不会丢失数据,未来用户字符串 browsers/oses/formats 的未来验证,并消除了解析时出错的可能性。

来自Wikipedia

For this reason, most Web browsers use a User-Agent value as follows: Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]

如果您已经存储了您需要的所有字段,那么请务必丢弃其余字段。要记录的数据量、保留日志的时间以及以何种形式保留它们是相当私人的事情,在某些方面因公司和项目而异。