You need to enable JavaScript to run this app. 如何使用JavaScript或jQuery获取cmd中ipconfig返回的本地系统IP
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript或jQuery获取cmd中ipconfig返回的本地系统IP

为什么之前的方案无法获取ipconfig对应的本地IP
  • 第一种geoip接口方案:返回的是当前网络的公网出口IP,和ipconfig里的内网网卡IP属于完全不同的网络地址范畴,自然匹配不上
  • 第二种JSP服务端脚本方案:request.getRemoteAddr()获取的是客户端访问服务器时的路由出口IP,request.getLocalAddr()是服务器自身的网卡IP,都无法拿到客户端本地的网卡真实IP
  • 第三种WebRTC方案:目前Chrome、Edge、Firefox等主流浏览器都默认开启了WebRTC本地IP匿名化策略,会把真实内网IP替换成mDNS域名,所以原有正则匹配只能拿到无效伪地址或者无结果
可行实现方案

分不同运行环境对应不同方案:

场景1:普通浏览器端公共网页

无用户主动授权的前提下无法直接获取ipconfig返回的本地网卡IP,这是浏览器安全沙箱的硬性限制,避免恶意网页窃取用户内网环境信息。如果是可控使用场景,可以将站点加入浏览器可信列表,手动关闭当前站点的WebRTC IP匿名化限制,调整后的WebRTC代码即可正常抓取本地IP:

window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
const getLocalIP = () => {
  return new Promise((resolve) => {
    const pc = new RTCPeerConnection({ iceServers: [] });
    pc.createDataChannel('');
    pc.createOffer().then(offer => pc.setLocalDescription(offer));
    pc.onicecandidate = (e) => {
      if (!e.candidate) return;
      const ipMatch = e.candidate.candidate.match(/([0-9]{1,3}(\.[0-9]{1,3}){3})/);
      if (ipMatch) {
        resolve(ipMatch[1]);
        pc.onicecandidate = () => {};
        pc.close();
      }
    };
  });
};
// 调用示例
getLocalIP().then(ip => console.log('本地IP:', ip));

场景2:Node.js/Electron等非浏览器沙箱环境

可以直接调用系统原生API获取网卡信息,返回结果和ipconfig完全一致:

// Node.js环境代码示例
const os = require('os');
const networkInterfaces = os.networkInterfaces();
const localIPs = [];
// 遍历所有网卡过滤出可用内网IPv4地址
Object.values(networkInterfaces).forEach(interfaces => {
  interfaces.forEach(iface => {
    if (iface.family === 'IPv4' && !iface.internal) {
      localIPs.push(iface.address);
    }
  });
});
console.log('本地网卡IP列表:', localIPs);

内容的提问来源于stack exchange,提问作者balaji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 17:45:00