Kat*_*tai 6 browser database user-agent
到目前为止,在记录用户登录时,除了已经解析的信息(如浏览器、版本、操作系统等)之外,我总是存储完整的用户代理。用户代理通常只是表中的文本字段。
在实施另一件类似的事情时,我问自己:这样做的意义何在?显然,用户代理在任何情况下都可以轻松操纵,并且唯一的相关信息(浏览器、版本和操作系统)已经被解析并单独存储。
除了回溯可能伪造的数据之外,仍然存储它是否有一些实际的好处?用户代理还包含哪些其他相关信息来证明用于存储它的(多年来,相当大的)数据量是合理的?
当然,我意识到用户代理包含的不仅仅是浏览器规范 - 但您真的需要回去分析用户代理本身多少次?
只是为了澄清:我正在谈论在解析出“相关”信息(浏览器、操作系统等)之后存储原始用户代理字符串的原因 -此后用户代理的意义是什么?
用户代理字符串包含有关环境的信息,包括操作系统和浏览器。这是我经常检查的事情。存储它有两个主要原因。
如果您正在跟踪错误报告或错误,那么此信息对于确定问题所在非常有用,甚至是必不可少的 - 想象一下尝试在没有用户代理的情况下查找仅在 IE8 上发生的错误!此信息还可以帮助您确定错误修复的优先顺序。在修复 7% 的环境中存在的问题之前,您需要先解决 93% 的环境中存在的问题。
其次,它提供了有关用户个人资料的非常有用的统计数据。您可能只想支持超过一定比例的用户群的环境。例如,如果您正在设计软件的新版本,并且在检查用户代理日志时发现没有人使用 IE,那么您可能不会费心去优化或设计 IE。
您似乎担心用户代理字符串可能被伪造。虽然这是可能的,但除非有某些特定原因有人可能会在您的应用程序中执行此操作,否则担心它似乎相当偏执。不过,你说得很好,要记住哪些信息可能是伪造的。
更新: 我明白你的观点,事实上,在我最近实现的日志记录中,由于数据开销,我删除了解析的字符串。同时存储原始字符串和解析后的字符串没有什么意义。这样做的唯一真正原因是使查询日志稍微容易一些,但这对我来说不是一个足够好的理由。就我个人而言,我存储整个原始用户代理,这意味着不会丢失数据,为未来的浏览器/操作系统/用户字符串格式提供未来证明,并消除解析时出错的可能性。
来自维基百科:
因此,大多数 Web 浏览器使用如下 User-Agent 值: Mozilla/[version]([系统和浏览器信息])[platform]([平台详细信息])[extensions]
如果您已存储了所需的所有字段,那么请务必丢弃其余字段。要记录的数据量、保留日志的时间以及以何种形式保存它们是相当个人化的事情,在某些方面会因公司和项目的不同而有所不同。
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |