我有一個項目,我正在解析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瀏覽器!)。
那麼,你將如何解析用戶代理字符串,並提取有用的信息,我可以產生一個報告?