User-Agent(UA)的二三事
User-Agent是瀏覽器請(qǐng)求頭中帶有的一個(gè)頭信息,包含了http請(qǐng)求發(fā)起者的信息。http協(xié)議在請(qǐng)求頭中包含這個(gè)域的主要目的是為了統(tǒng)計(jì)數(shù)據(jù),同時(shí)可以達(dá)到追蹤是否有違背協(xié)議的情況出現(xiàn)以及根據(jù)特定的用戶適配特定的頁面的需求。瀏覽器領(lǐng)域的紛爭(zhēng)給了UA更多的發(fā)展,目前http://www.user-agents.org/列出的ua已經(jīng)多達(dá)上百條。我們目前最常用的就是各種終端設(shè)備(尤其是手機(jī))瀏覽器提交請(qǐng)求時(shí)設(shè)置的UA,比如蘋果iphone手機(jī)的UA可能在訪問時(shí)就是“IUC(U;iOS 5.0.1;Zh-cn;320*480;)/UCWEB8.1.4.125/42/997”,這個(gè)比較文藝,看樣子像是iphone用UC的;一個(gè)純粹的果粉可能是“Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8C148”,而android的可能就是“|Mozilla/5.0 (Linux; U; Android 2.2.2; zh-cn; ZTE-U V880 Build/FRF91) UC AppleWebKit/530+ (KHTML, like Gecko) Mobile Safari/530”,symbian可能是“MQQBrowser/2.8 (E71-1;SymbianOS/9.1 Series60/3.0)”。我們可以根據(jù)UA統(tǒng)計(jì)各種設(shè)備的訪問量,達(dá)到統(tǒng)計(jì)的目的,同時(shí),如果不做UA偽裝的話,也可以找到各種spider和crwaler。
如何去讀一個(gè)UA呢?根據(jù)RFC2616的描述要求,一個(gè)ua字段是這樣的形式User-Agent = "User-Agent" ":" 1*( product | comment ),方便起見,一般所product描述是依照其重要性來排序的,先出現(xiàn)的相對(duì)重要一點(diǎn)。product的形式就是名字和版本號(hào),中間用‘/’隔開。就wikipedia上的說法,大多數(shù)的瀏覽器目前使用的UA格式如下:Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]。并在文中舉例:Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
其中
其中各種引擎說明,可以參看這篇文章。
你可以通過這里來測(cè)試你的瀏覽器的UA,當(dāng)然如果自己寫爬蟲的話,也記得做好UA的偽裝工作。如果要做一個(gè)PC站點(diǎn)配套的wap站點(diǎn),如果能力足夠且時(shí)間充裕的話,完全可以重寫頁面,用HTML5或者是普通XHTML來進(jìn)行。寫好以后,條件好的單獨(dú)部署單獨(dú)維護(hù),條件差的,可以統(tǒng)一部署,由應(yīng)用服務(wù)器端(apache有開源的模塊)根據(jù)UA來進(jìn)行判斷需要顯示的頁面代碼,或者交由框架判斷也可以(寫過濾器對(duì)request進(jìn)行首回合判斷)。
posted on 2012-03-13 18:27 changedi 閱讀(2463) 評(píng)論(1) 編輯 收藏 所屬分類: 雜談