
我是火狐,看我偽裝的怎么樣?
大概有兩年沒有去過chinaz的論壇了,昨天上去逛了逛。正好看到一個朋友在問百度是如何判斷是不是手機登錄的。有幾個熱心朋友回答的是js,我把百度首頁的js看了下,沒有找到一絲的手持設備判斷的信息,我也就回答了兩句,這里的判斷應該屬于程序部分的處理,不屬于前端的范疇,是靠判斷請求頭信息(HTTP_USER_AGENT)進行判斷的。不知道這位朋友能不能明白。
為了驗證這個結論,這里我用firefox偽造請求頭信息(主要是HTTP_USER_AGENT部分),來進行模擬手機訪問百度網站。具體操作流程看下面。
如何用firefox偽造user agent來模擬手機訪問網站
- 首先需要安裝三個Firefox插件:wmlbrowser、XHTML Mobile Profile、User Agent Switcher;(我稱它們為“偽娘三賤客”)

先來一睹“偽娘三賤客”的尊容
- 安裝好后需要設置 User Agent Switcher ,點擊菜單 工具 → Default User Agent → User Agent Switcher → Options → New→New User Agent… ,Description是你給它的一個稱呼,比如小三,凹凸曼等等。關鍵的部分是User Agent里面的東西(這里是請求頭主要的信息,程序會根據這個請求頭進行判斷你是否是手持設備),這里就需要把我們想要模擬的手持設備的信息填入了。



- 添加好后一路確定,回到瀏覽器界面。工具 →default user agent →選擇你自己添加的那個 →在瀏覽器地址輸入你想要訪問的地址即可。
十分大方這里你會看到幾個選項,Default User Agent (瀏覽器默認的信息),Internet Explorer (可以模擬ie6,7,8的頭信息),Search Robots (模擬谷歌,雅虎,msn的蜘蛛),iphone 3.0 (默認存在的一個),圖片中的小三是我自己添加的一個(偽造Android的頭信息) - 下面列出幾個比較常見手機的User Agent:(如果想要查詢更多的手機user agent 信息的話,去看這里,還有這里)
iPhone3:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
Android:
Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
諾基亞N95:
Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/30.0.015; Profile MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413
諾基亞N97:
Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124
firefox偽造頭信息,訪問網站的效果
ok,當上面的幾步你都熟悉了的話,就可以輸入你想要造訪的網站了。下面看我用我的“小三”拜訪百度首頁的情況(小三偽造的安卓的頭)

Now,看到了吧。百度首頁變了吧。而且智能的判斷出了這個采用安卓系統訪問!你可以換成iphone試試,框中的部分是不同的!
這里你也許會發現用瀏覽器訪問的百度頁面好大啊,其實這里是它頁面css的問題,為了實現自適應屏幕寬度。如果想要得到好的瀏覽效果的話,可以參考如何在電腦上模擬手機登陸網站(Opera Mobile Emulator)
查看firefox發送的頭信息,進一步驗證我的結論
我們用firebug查看一下請求頭信息User-Agent的內容,發現就是我修改的安卓的user agent。而百度首頁返回了不同的頁面,ok結論成立。百度是通過服務端進行手持設備的判斷,不過怎樣判斷的,代碼是什么,這里我就不甚了了了。
