首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >局域网IP地址的JavaScript检测

局域网IP地址的JavaScript检测
EN

Stack Overflow用户
提问于 2019-06-22 00:03:31
回答 1查看 781关注 0票数 1

我一直在使用下面的代码来检测运行一些专有软件的客户端的LAN IP地址(请不要,“您不应该这么做”,我没有编写代码)。

代码语言:javascript
复制
function ip_local()
{
 var ip = false;
 window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || false;

 if (window.RTCPeerConnection)
 {
  ip = [];
  var pc = new RTCPeerConnection({iceServers:[]}), noop = function(){};
  pc.createDataChannel('');
  pc.createOffer(pc.setLocalDescription.bind(pc), noop);

  pc.onicecandidate = function(event)
  {
   if (event && event.candidate && event.candidate.candidate)
   {
    var s = event.candidate.candidate.split('\n');
    ip.push(s[0].split(' ')[4]);
   }
  }
 }

 return ip;
}
ip_local();

这是另一篇StackOverflow文章中的文章,直到今天下午,这段代码已经运行了一年半。

因为我的本地ip似乎被检测为153 b3a68-e3fb-4451-9717-d9b3bc2b5c60。本地而不是通常的192.168.0.11。

编辑:如果有人关心这个问题,那么这个问题是不可绕过的,必须通过服务器端语言来解决,在我的例子中,我最终使用PHP作为解决问题的临时“绷带”。

这是我的应用程序的一个问题,因为它检测主机上是否运行本地服务器。如果无法检测到LAN IP地址,则无法执行此操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 00:21:35

这是一个新的安全标准的一部分,以防止泄露私人IP地址。

另见:https://datatracker.ietf.org/doc/html/draft-ietf-rtcweb-mdns-ice-candidates-02

摘要:

正如IPHandling中详细介绍的那样,默认情况下,公开客户端私有IP地址最大限度地提高了在两个客户端之间成功创建直接对等连接的可能性,但为用户指纹创建了一个重要的表面。IPHandling认识到了这个问题,但也承认这个问题没有当前的解决方案;选择使用模式3解决隐私问题的实现经常会受到WebRTC应用程序中失败或次优连接的影响。这尤其是对非管理网络,通常是住宅或小型办公室的问题,在这些地方,NAT回送可能得不到支持。本文档提出了解决此问题的总体解决方案,方法是为每个本地私有IP地址注册短暂的mDNS名称,然后在收集ICE候选地址时向web应用程序提供这些名称,而不是IP地址。WebRTC实现将这些名称解析为IP地址并像往常一样执行ICE处理,但是实际的IP地址不会暴露给web应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56711611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档