我有一个项目,我正在解析Tomcat日志以获取有用的信息。起初,这个程序非常简单,只需一个grep即可轻松完成。但是,一旦意识到这些信息可能有用,我就被要求做更多更复杂的解析。用户代理字符串:我应该捕获什么?
它已经到了我想要将日志条目的通用信息存储在数据库中的位置,然后执行各种查询以获取自定义报告。这些信息大部分是相当直接的,很容易解析。
- 有IP地址和代理地址。例如,我现在有一份来自我们聘用的公司的1万个IP地址列表,用于测试我们的应用安全性。因此,我们希望忽略任何报告中来自这些IP地址的条目。
- 有会话ID:我需要一个报告,其中用户在页面“B”之前前往页面“A”,但不是在页面“C”之后浏览页面。会话ID允许我跟踪这种行为。
- 有时间和日期。
- 有HTTP响应代码。
- 这是否是GET或POST操作。
- 有网页本身(和可能的值通过GET传递)。
最后是用户代理混乱...我的意思是用户代理字符串。
用户代理字符串似乎有一个相当松散的布局。例如,他们中的99%以Mozilla/4.0
开头,尽管其中大多数来自浏览器与Mozilla,Netscape或Firefox无关,甚至不使用Gecko布局引擎。
不幸的是,用户代理字符串在我们的报告中变得相当重要。例如,我们需要知道有多少人在使用Safari或使用任何移动浏览器,或者在基于Linux的系统上使用Windows与iOS。
最大的问题是我不知道将来可能会有什么要求,所以我不能100%确定哪些信息是有用的,哪些是无用的(看起来99.7%的用户使用Mozilla 4.0浏览器!)。
那么,你将如何解析用户代理字符串,并提取有用的信息,我可以产生一个报告?