在服务器端获取本地IP地址的非服务器端方法?
我想为我的局域网上的用户提供一种方法来向网络管理员(我)“注册”,而无需在我的计算机上托管一个页面b)在*服务器上托管一个脚本(因为它是只有一个路由器,不是一个真正的HTTP服务器)或c)注册一个动态域,以便前两者之一,并避免混淆发送一个URL到本地IP的链接。在服务器端获取本地IP地址的非服务器端方法?
是否有一种简单的方法通过客户端脚本在屏幕上显示本地IP地址?我想也许我可以有一个iframe指向一些通用的URL与路径中的一些JavaScript,这样我可以让用户去到非本地站点,并且iframe会弹出他们的IP地址,他们然后可以在主远程页面中输入表单。
如果一切都失败了,有没有办法让他们查找跨平台的IP,而不涉及使用命令行(我认为第一个即使不可能也可能比第二)。
是的确有。我觉得有什么你想在这里做一个例子: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,但它是一个建议,如果你想尝试出于教育目的)
希望这会有所帮助。 马克
感谢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
}
这是一个隐私问题?事实上,公开的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
@gman 也许我应该删除单词“巨大”:)当时正在回答我对以下事情有一些疑虑的问题: 您无法使用不同的浏览器隐藏自己(两个浏览器将具有相同的本地IP)+几个位来指纹你的浏览器。使用子网,访问路由器,打印其他本地设备并通过XSS执行代码 - 这只是另一个攻击媒介。也许还有一些与定时攻击有关的问题。 – 2014-05-15 12:11:25
谢谢,你救了我的一天! – 2014-05-28 15:59:56
看起来像一个系统管理员的问题,我 - 转会serverfault.com – Oded 2010-01-26 09:43:48
这是唯一的系统管理员,直到需要为JavaScript/iframes进入它。不知道这是否是他们的包。但我会给它一个镜头。 – Anthony 2010-01-26 09:49:12