如何在NODEJS中获取随机客户端的IP

时间:2014-12-30 11:58:05

标签: node.js

我正在 NODE.JS 中开展项目,当用户登录时,他的区域天气会自动显示在他的信息中心上。 根据我的理解,当客户来时:

1)使用 request-ip 跟踪他的ip。

2)然后根据这个可以确定他的区域的ip尺寸。对于这个m使用 satelize

3)然后在经度和纬度的基础上,可以借助 forcast.io 预测他所在地区的天气。

问题是向该中间件发送请求,得到环回ip。(localhost:3000)。虽然我想得到任何随机客户端的ip.so,我可以检查我的api是否正常工作。 这是我的代码:

router.get('/',function(req,res){

  var clientIp = requestIp.getClientIp(req); //inside middleware handle

  satelize.satelize({ip:clientIp}, function(err, geoData) { // if data is JSON, we may wrap it in js object 

    var obj = JSON.parse(geoData);

    forecast.get([obj.latitude, obj.longitude], function(err, weather) { 

      if(err) return console.dir(err); 

      console.log(weather);

    });

  }); 

});

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望在本地计算机上进行开发时使用随机IP地址。为此,您必须根据您的环境设置clientIp变量。您可以使用NODE_ENV,请参阅https://stackoverflow.com/a/16979503/2494649以获得更好的解释。

如果您想使用随机客户端的IP地址,您必须自己收集这些地址并将其设置为clientIp。例如,您可以设置随机客户端ip的数组并随机使用它们。

var randomIps = ['1.2.3.4', '5.6.7.8', '123.123.123.123'];
var clientIp;

if(process.env.NODE_ENV === 'development') {
    // Select random IP address
  clientIp = randomIps[Math.floor(Math.random()*randomIps.length)];
} else {
  clientIp = requestIp.getClientIp(req); //inside middleware handle
}

您可以使用您的应用将您的客户端IP地址保存到数据存储区(匿名),并使用这些地址为clientIp变量提供随机IP地址。