2010-01-26 207 views
5

我想为我的局域网上的用户提供一种方法来向网络管理员(我)“注册”,而无需在我的计算机上托管一个页面b)在中央服务器上托管一个脚本(因为它是只有一个路由器,不是一个真正的HTTP服务器)或c)注册一个动态域,以便前两者之一,并避免混淆发送一个URL到本地IP的链接。在服务器端获取本地IP地址的非服务器端方法?

是否有一种简单的方法通过客户端脚本在屏幕上显示本地IP地址?我想也许我可以有一个iframe指向一些通用的URL与路径中的一些JavaScript,这样我可以让用户去到非本地站点,并且iframe会弹出他们的IP地址,他们然后可以在主远程页面中输入表单。

如果一切都失败了,有没有办法让他们查找跨平台的IP,而不涉及使用命令行(我认为第一个即使不可能也可能比第二)。

+0

看起来像一个系统管理员的问题,我 - 转会serverfault.com – Oded 2010-01-26 09:43:48

+0

这是唯一的系统管理员,直到需要为JavaScript/iframes进入它。不知道这是否是他们的包。但我会给它一个镜头。 – Anthony 2010-01-26 09:49:12

回答

1

是的确有。我觉得有什么你想在这里做一个例子:http://www.whatsmyip.org/more/

,如果你认为你页面看到内部的IP段以下的查看源代码:

      <p><b>Internal (LAN) IP</b>: <span id="localip">Checking...</span> 
         <script> 
          function MyAddress(IP) 
           { document.getElementById("localip").innerHTML = IP; } 
         </script> 
         <applet code="MyAddress.class" MAYSCRIPT width=0 height=0> 
          Sorry You Need Java For This To Work 
         </applet> 

所以我想你有几个选项,您可以在该网站上下载已编译的Java applet的副本,或者编写自己的。这个工作原理的总体思路是,java小程序加载读取本地ip,然后调用DOM并更新该元素的innterHTML。 (顺便说一句,我不告诉你偷applet,但它是一个建议,如果你想尝试出于教育目的)

希望这会有所帮助。 马克

7

感谢Webrtc有可能从JavaScript访问本地IP。

看看:http://net.ipcalf.com/(源)

(它可以在铬)

但是通过JavaScript访问本地IP可能是一个隐私和安全问题。

和下面再简单的例子net.ipcalf.com

,并在jsfiddle

var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection; 

var configuration = { "iceServers": [] }; 
var pc; 
var localIP; 

if(RTCPeerConnection){ 

    pc = new RTCPeerConnection(configuration); 
    pc.onicecandidate = function (evt) { 
     if (evt.candidate) { 
      if (!localIP) { 
       localIP = getIpFromString( evt.candidate.candidate); 
       console.log(localIP); 
      } 
     } 
    }; 

    pc.createOffer(function (offerDesc) {; 
     pc.setLocalDescription(offerDesc);          
    }, function (e) { console.warn("offer failed", e); }); 

    function getIpFromString(a) 
    { 
     var r = a.match(/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/); 
     return r[0]; 
    } 

} else { 
//browser doesn't support webrtc 
} 
+1

这是一个隐私问题?事实上,公开的IP A.B.C.D和本地的IP D.E.F.G在某种程度上更像是一个ID,那么你可以检查用户机器的所有其他事情?或者是你可以知道他们的子网并开始扫描它,即使你可能已经知道大多数用户是192.168.xy或10.0.xy等等,其中x = 0或1.只是好奇,失踪。 – gman 2014-05-15 08:24:49

+0

@gman 也许我应该删除单词“巨大”:)当时正在回答我对以下事情有一些疑虑的问题: 您无法使用不同的浏览器隐藏自己(两个浏览器将具有相同的本地IP)+几个位来指纹你的浏览器。使用子网,访问路由器,打印其他本地设备并通过XSS执行代码 - 这只是另一个攻击媒介。也许还有一些与定时攻击有关的问题。 – 2014-05-15 12:11:25

+0

谢谢,你救了我的一天! – 2014-05-28 15:59:56

相关问题