最近游戏项目中更新机制有所修改,游戏启动时会从cdn上读取一个文件(约60B),但是后台异常收集系统中发现很多玩家请求不了该文件(libcurl的get请求),返回的error code有很多种,以6、22、28、56居多。
一直无法确定是否跟程序完全无关(之前遇到过返回error code 23跟程序有关,是程序出bug了),因为有一些玩家反映使用2g/3g网络就正常进入游戏了。
之后我将系统中查询出来的数据,主要是IP,通过调用第三方的接口(其实就是发一条http请求),获得该IP所在地区以及线路,在excel中进行分析。网上有很多这种API,但是我发现还是腾讯提供的IP共享计划最为准确,以IP:117.136.73.74为例
http://ip.qq.com/cgi-bin/searchip
http://www.baidu.com/s?ie=utf-8&wd=117.136.73.74
新浪 http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=117.136.73.74
淘宝 http://ip.taobao.com/service/getIpInfo.php?ip=117.136.73.74
显示:华北 - 北京 移动 云南省/北京 这个差距有点大 - -
我获取IP的例子使用的是百度的网址,本想使用腾讯的分享计划,一是它的接口是cgi动态的比较慢,二是它的页面是gbk我抓取回来是乱码,不想搞乱码的问题就直接使用了百度的页面
request.get('http://www.baidu.com/s?ie=utf-8&wd=' + ip, {form:{}}, function(error, respose, body) {
if (/IP地址: ([^<]+)</span>([^<]+)/.test(body)) {
//console.log(RegExp["$1"] + ' ' + RegExp['$2']);
fn(RegExp['$2']);
}
});