在JavaScript中获取IP地址可以通过多种方法实现,以下是一些常见的方法及其特点:
WebRTC(Web Real-Time Communication)允许浏览器之间进行实时通信,它也可以用来获取用户的本地和公网IP地址。
示例代码:
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.candidate) {
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('Local IPs:', Object.keys(ips));
});
优势:
限制:
可以通过调用第三方提供的IP地址查询API来获取用户的公网IP地址。
示例代码:
fetch('https://api.ipify.org?format=json')
.then(response => response.json())
.then(data => console.log('Public IP:', data.ip));
优势:
限制:
可以在服务器端设置一个代理服务,客户端请求该服务时,服务器可以读取客户端的IP地址并返回给客户端。
示例流程:
优势:
限制:
通过以上方法,可以根据具体需求选择合适的方式来获取IP地址。
领取专属 10元无门槛券
手把手带您无忧上云