在node.js中获取IP的ISP

5
有没有一种方法可以在Node.js / Express服务器上执行whois,以获取提供该IP的ISP? 我已经获得了IP,我不是在寻找获取客户端IP的方法。 我已经找到了通过外部请求向付费服务发送JSON并返回的方法,但我想找到一种本地方法。 你们知道有什么可以帮助我的吗? 编辑:我不是在尝试构建一个whois服务器,我只需要为我构建的应用程序获取客户端的ISP名称。

你是说你想在node.js中实现whois客户端吗? - booyaa
完全不是。我想使用一个。 - brnrd
你的意思是使用一个已经存在且免费的服务? - booyaa
我更多地考虑的是以Linux终端中的NSLOOKUP命令的方式获取信息。我只需要从IP地址中获取ISP名称,不一定需要一个现有的服务。 - brnrd
开始感觉这是一个“为我免费工作”的场合... - booyaa
完全没有。我只是想知道是否有办法在Node中复制NSLOOKUP命令。否则,我愿意自己实现一切。 - brnrd
3个回答

8
您可以使用node-whois模块获取ISP信息,但是在其响应中,访问特定键的值相当复杂。因此,还有另一种方法可以使用卫星模块,该模块可以提供快速响应,并且响应以json格式可用,因此您可以轻松访问任何键值。 以下是代码。
var satelize = require('satelize');
var ExternalIP = "173.194.70.100"; // I asume that, you already have external(public)IP
satelize.satelize({ip: ExtenalIP}, function(err, geoData) 
{

     if(err){
        console.log(" Error in retriving ISP Information");  
     }
     else
     {
        console.log("ISP Information for "+ ExternalIP+" :"+geoData );
     }
});

你能否添加一个卫星npm模块的链接。这将很好。 - Walter

6

这个是一个实现whois客户端的Node.js模块。

正如@robertklep所指出的那样,上面的模块不适用于IP地址。但是,node-whois可以(我亲自测试了代码):

"use strict";

var whois = require('node-whois');

whois.lookup('173.194.70.100', function(err, data) {
  console.log(err, data);
});

唯一的问题是输出不太好看。

你尝试传递一个IP地址吗? - robertklep
你更新的解决方案存在问题,因为它可能涉及到其他WHOIS服务器,需要搜索才能获取IP地址分配的实际ISP(通过ReferralServer属性)。 - robertklep
输出样式并不是唯一的问题。它会给出该IP的RIR名称,然后我需要向RIPE数据库发出请求以获取更多信息。谢谢。 - brnrd

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接