2013-05-14 65 views
5

有沒有一種方法可以在IP上執行Whois以獲取在Node.js/Express服務器中提供該IP的ISP?在node.js中獲取IP的ISP

我已經得到了IP,我沒有找到獲得客戶IP的方法。

我已經找到了發送回JSON的付費服務的外部請求方式,但我想找到一種本地方式。

你們知道什麼可以幫助我嗎?

編輯:我沒有試圖建立一個whois服務器,我只是需要我建立的應用程序來獲取客戶端的ISP名稱。

+0

你是說你想在node.js中實現whois客戶端嗎? – booyaa 2013-05-14 11:28:06

+0

根本不是。我想用一個。 – brnrd 2013-05-14 12:05:35

+0

你的意思是使用免費的現有服務? – booyaa 2013-05-14 12:50:14

回答

7

您可以使用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); 
    } 
}); 
+0

你可以添加一個鏈接到衛星npm模塊。會好的。 – Walter 2017-01-10 22:27:46

6

This是實現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); 
}); 

唯一的問題是,輸出不是很好看。

+0

您是否嘗試將IP號碼傳給它? – robertklep 2013-05-14 12:58:58

+0

@robertklep謝謝你指出。修正了我的答案。 – adrianp 2013-05-14 13:13:28

+0

您的更新解決方案的問題是,它可以引用其他需要搜索的WHOIS服務器,以獲取IP號碼分配給的實際ISP(通過ReferralServer屬性)。 – robertklep 2013-05-14 13:21:20