2011-05-31 56 views
1

我想從HTTP頭中的用戶代理字符串中獲取瀏覽器列表。在衆多的字符串,瀏覽器的信息是字符串中的第二個條目,如下所示:Http頭用戶代理

(compatible;.MSIE.8.0;.Windows.NT.5.1;.Trident/4.0) 

但在某些字符串,有或者沒有瀏覽器的信息,或者信息之際,第3項如下所示:

(Macintosh;.Intel.Mac.OS.X.10_6_1;.U;.so) 
(Macintosh;.Intel.Mac.OS.X.10_6_1;.so) 

如何解決這個問題? Python中有沒有處理HTTP頭字段的東西?非常感謝。

+2

有沒有感覺或理由在UA字符串,只有瘋狂:( – Piskvor 2011-05-31 12:54:32

+0

如此真實,你只能優化一些瀏覽器,你沒有一個通用的方法 – SinistraD 2011-05-31 12:58:41

+0

也看到這個線程: HTTP://計算器。 com/questions/927552/parsing-http-user-agent-string – 2012-05-24 12:14:29

回答

3

我在PHP寫了一個用戶代理分析器,所以它可能有點過時,但希望它有幫助。我提取了瀏覽器信息,操作系統和語言,但我只在這裏包含瀏覽器信息。

所有主要的瀏覽器名稱都包含在UA字符串中,但對於Firefox,使用字符串Firefox。因此,創建一個包含以下內容的數組:

browserList = {'Opera': 'Opera', 
    'Internet Explorer': 'MSIE', 
    'Firefox': 'Firefox', 
    'Chrome': 'Chrome', 
    'Not specified' => ''} 

然後嘗試在UA字符串上匹配它們。如果你不想擴大你的統計數據,你可以添加更多的瀏覽器。至於版本號,在大多數情況下,它只發生在瀏覽器名稱之後。因此,嘗試在找到瀏覽器名稱的索引後面提取第一個數字點號。

您的訪客可能是履帶(殭屍程序,如谷歌的),你可以找到這些通過這個列表匹配:

nuhk, Googlebot, Yammybot, Openbot, Slurp, MSNBot, Ask Jeeves/Teoma, ia_archiver 

希望這有助於。

+0

謝謝大家的回覆和評論,我會看看能做些什麼:) – Adia 2011-05-31 14:15:59