做手機應用,我們都希望使用者通路我們服務時,能夠獲得使用者的機型資訊,有兩種途徑:1)你的網站加入了移動的白名單清單,2)通過和支援白名單的第三方合作擷取;
如果你既不在白名單清單中,有不想支付費用,怎麼辦,其實可以用一種變通的方法,通過使用者請求的Http頭資訊,來識别出機型資訊。
1. 擷取HTTP的User-Agent資訊
可以使用Nginx(輕量級的Web 伺服器/反向代理伺服器 www.nginx.net),在Nginx的日志檔案中,記錄了使用者通路網站的資訊,包括Http頭中的User-Agent資訊。
例如:
218.202.106.201 - - [09/Jun/2011:09:40:48 +0800] "GET /masw/static/css/m1001.css HTTP/1.1" 200 2894 "http://wap.xxxx.cn/" "Nokia5330/5.0 (06.80) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+" "10.170.13.76"
218.202.106.201 - - [09/Jun/2011:09:40:58 +0800] "GET /masw HTTP/1.1" 302 0 "-" "Nokia5130/2.0 (07.95) Profile/MIDP-2.1 Configuration/CLDC-1.1" "10.144.2.86"
218.202.106.201 - - [09/Jun/2011:09:41:48 +0800] "GET /masw HTTP/1.1" 302 0 "-" "Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/31.0.016; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413" "10.141.43.165"
我們可以看到這個3個請求來自:Nokia5330, Nokia5130和NokiaN82
Note: Nginx可以作為LoadBalance使用,效率高,配置簡單,穩定可靠
2. 根據User-Agent資訊,整理出機型關鍵字
例如:
27
Nokia
N81
S
4
NokiaN81
Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN81-3/11.0.045 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
28
Nokia
7260
F
1
Nokia7260
Nokia7260/2.0 (05.90) Profile/MIDP-2.0 Configuration/CLDC-1.1
其中NokiaN81和Nokia7260就是機型關鍵字
3。根據機型關鍵字整理出機型清單
372 Nokia E71 SymbianOS s60 v3 S NokiaE71
373 Nokia N81 SymbianOS s60 v3 S NokiaN81
4。根據以上資料,就可以從User-Agent得到具體的機型了
5。代碼實作
可以用腳本自動實作上面的功能,推薦使用Python。
Vendor | Phone Num | Phone Percent |
Nokia | 2351 | 34.08% |
Siemens | 1131 | 16.40% |
SonyEricsson | 1115 | 16.16% |
SAMSUNG | 804 | 11.66% |
上面是某省的資料,可見Nokia保有量還是很高的。