做手机应用,我们都希望用户访问我们服务时,能够获得用户的机型信息,有两种途径: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保有量还是很高的。