当前位置: 首页 > 知识库问答 >
问题:

javascript - 前端可以获取本地的ip地址吗?

燕元明
2023-08-21

就是用户打开页面后端,可以直接获取本机的ip地址吗?

共有2个答案

宰父宾实
2023-08-21

分情况讨论了。先说下常规可能获取ip的情况,通常使用jaava中的window.RTCPeerConnection对象来实现这一功能。
(代码仅仅作为一个参考示例,思路启发,具体如何实现大体逻辑思路对了就行)

// 获取IP地址function getIPAddress() {  return new Promise((resolve, reject) => {    const RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;    if (!RTCPeerConnection) {      reject('当前浏览器不支持获取IP地址');      return;    }    const connection = new RTCPeerConnection({iceServers: []});    connection.createDataChannel('');    connection.createOffer()    .then(offer => connection.setLocalDescription(offer))    .catch(error => reject(error));    connection.onicecandidate = (event) => {      if (event.candidate) {        const ipRegex = /(?:[0-9]{1,3}\.){3}[0-9]{1,3}/;        const ipAddress = ipRegex.exec(event.candidate.candidate)[0];        resolve(ipAddress);        connection.onicecandidate = null;      }    };  });}// 使用示例getIPAddress()  .then(ip => console.log('IP地址:', ip))  .catch(error => console.error('无法获取IP地址:', error));

当然,目前有些windwos端的浏览器从安全角度考虑,做了一些java策略,可能会导致你的调用失败,也不排除我们这种“极客”一点的用户喜欢挂机场,那么你获取的ip就可能是错误的信息了。
还有一种情况就是系统端的限制,比如说ios,mac这种系统隐私策略,这些策略可能会随时更新,毕竟隐私安全越来越重要,攻防对抗的机会也越来越多,所以个人觉得,最好还是后端实现最好。

巫马庆
2023-08-21

纯浏览器端不可以,需要借助服务端才行,一般发起一次请求让服务端返回一下 ip 地址就好了。

 类似资料:
  • 问题内容: 我知道对此问题的最初反应是“否”和“无法完成”,并且“您不需要它,您做错了什么”。我正在尝试获取用户的LAN IP地址,并将其显示在网页上。为什么?因为这就是我正在处理的页面的全部内容,因此会显示有关您的尽可能多的信息 因此,除了向用户展示以供参考之外,我实际上并没有对IP做任何事情。我曾经通过使用一个小的Java小程序来做到这一点。效果很好。但是这些天来,浏览器让您多次达成共识和信任

  • 问题内容: 我的机器上运行了一个简单的node.js程序,我想获取运行该程序的PC的本地IP地址。如何使用node.js获得它? 问题答案:

  • get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址

  • 需求是当本地程序请求一个IP地址的时候,映射到另一个ip地址上去。 和DNS不同的是,这里没有解析域名,因此修改hosts不行。 有没有办法或者工具可以做到?

  • get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址

  • 我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。