天天看点

如何不通过白名单获取手机的UA

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