在 JavaScript 中获取内网 IP 地址通常需要在支持 WebRTC(Web Real-Time Communication)的环境下进行。WebRTC 允许浏览器之间进行实时通信,并在此过程中可能会暴露本地网络信息,包括内网 IP 地址。
基础概念:
获取内网 IP 的方法:
可以通过监听 WebRTC 的 icecandidate
事件来获取本地网络信息。
示例代码:
function getLocalIPs(callback) {
const RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
const ips = {};
if (!RTCPeerConnection) {
callback(ips);
return;
}
const rtc = new RTCPeerConnection({ iceServers: [] });
rtc.createDataChannel('', { reliable: false });
rtc.onicecandidate = function (ice) {
if (!ice || !ice.candidate || !ice.candidate.candidate) return;
const ipMatch = /([0-9]{1,3}(\.[0-9]{1,3}){3})/.exec(ice.candidate.candidate);
if (ipMatch) {
const ip = ipMatch[1];
ips[ip] = true;
callback(ips);
}
};
rtc.createOffer().then(offer => rtc.setLocalDescription(offer));
}
getLocalIPs(function (ips) {
console.log('内网 IP 地址:', Object.keys(ips));
});
优势:
应用场景:
注意事项:
常见问题及解决方法:
请注意,由于隐私和安全的原因,未来浏览器可能会进一步限制通过 WebRTC 获取本地 IP 地址的能力。
领取专属 10元无门槛券
手把手带您无忧上云