【问题标题】:JavaScript detection of LAN IP address局域网 IP 地址的 JavaScript 检测
【发布时间】:2019-11-04 18:53:44
【问题描述】:

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

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 似乎被检测为 153b3a68-e3fb-4451-9717-d9b3bc2b5c60.local 而不是通常的 192.168.0.11。

编辑: 如果有人关心,这个问题是不可绕过的,必须通过服务器端语言来完成,在我的情况下,我最终使用 PHP 作为解决问题的临时“创可贴”。

这对我的应用来说是个问题,因为它会检测主机上是否正在运行本地服务器。如果无法检测到 LAN IP 地址,它就无法做到这一点。

【问题讨论】:

  • 你为什么不在另一个 SO 问题中发表评论,问为什么它不再工作了?
  • 因为这似乎仅限于我的经验。这不是一个“全面”的交易。我想知道是否有人对此有任何经验。
  • 我刚试了一下,效果很好。
  • 这是我的观点,我想知道是否有其他人有我的经验,作为我的每个问题。
  • 如果你有mac,使用这个方法:stackoverflow.com/questions/56543917/…

标签: javascript ip lan


【解决方案1】:

这是新安全标准的一部分,用于防止私有 IP 地址泄露。

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

总结:

如 [IPHandling] 中详述,通过以下方式公开客户端私有 IP 地址 默认最大化成功创建直接的概率 两个客户端之间的点对点连接,但创建一个 用户指纹识别的重要表面。 [IPHandling] 识别 这个问题,但也承认目前没有解决方案 问题;选择使用模式 3 来解决 隐私问题经常因连接失败或次优连接而受到影响 在 WebRTC 应用程序中。这尤其是非托管的问题 网络,通常是家庭或小型办公室,其中 NAT 环回可能 不支持。

本文档通过以下方式提出了该问题的整体解决方案 为每个本地私有 IP 地址注册临时 mDNS 名称, 然后将这些名称而不是 IP 地址提供给 收集 ICE 候选人时的 Web 应用程序。网络RTC 实现将这些名称解析为 IP 地址并执行 ICE 照常处理,但实际 IP 地址不会暴露给 网络应用程序。

【讨论】:

  • 哎呀,这样就没有办法了?这现在是 Windows 的一部分了吗?
  • @BarrieReader 不,没有办法,也不应该有。如果这是您需要的功能,请使用浏览器扩展。这是 Chrome(可能还有其他浏览器)的一部分,而不是 Windows。
  • 浏览器扩展是不可能的,因为该应用程序在 Chrome 的 AppMode 下运行...而且它在本地运行...所以信任个人用户安装扩展是不行的 :(
猜你喜欢
  • 2012-01-10
  • 2013-10-02
  • 1970-01-01
  • 2015-11-12
  • 2017-07-15
  • 2015-01-31
  • 2016-02-26
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多