js 获取当前电脑ip地址

在开发Web应用程序或网络相关的项目时,有时我们需要获取用户的IP地址,以便进行定位、统计分析或其他操作。在JavaScript中,我们可以通过一些方法来获取当前用户的IP地址。本文将介绍不同的方法来实现这一点。
通过第三方服务获取IP地址
一种常见的方法是利用第三方服务来获取用户的IP地址。这种方法通常涉及向一个公共API发送请求,然后从响应中解析出IP地址。下面是一个使用ipify这个免费的IP地址API的示例代码:
const apiUrl = 'https://api.ipify.org?format=json';
fetch(apiUrl)
.then(response => response.json())
.then(data => {
const ipAddress = data.ip;
console.log('Your IP address is: ', ipAddress);
})
.catch(error => console.error('Error getting IP address: ', error));
在这个示例中,我们首先定义了一个API的URL,然后使用fetch方法向这个URL发送请求。一旦我们收到响应,我们将其解析为JSON格式,并从中提取出IP地址。最后,我们将IP地址打印到控制台上。
运行以上代码,你会得到类似如下的输出:
Your IP address is: 123.456.789.123
通过WebRTC获取IP地址
另一种获取IP地址的方法是利用WebRTC技术。WebRTC(Web Real-Time Communication)是一种实现浏览器之间实时通信的技术,它可以访问用户的网络信息,包括IP地址。下面是一个使用WebRTC API获取IP地址的示例代码:
const getLocalIP = () => {
return new Promise((resolve, reject) => {
const RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
if (!RTCPeerConnection) {
reject('Your browser does not support WebRTC');
}
const pc = new RTCPeerConnection({iceServers: []});
pc.createDataChannel('');
pc.onicecandidate = (e) => {
if (!e.candidate) {
pc.close();
reject('No IP address found');
}
const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
const ipAddress = ipRegex.exec(e.candidate.candidate)[1];
resolve(ipAddress);
};
pc.createOffer()
.then(pc.setLocalDescription.bind(pc));
});
};
getLocalIP()
.then(ip => console.log('Your local IP address is: ', ip))
.catch(error => console.error('Error getting local IP address: ', error));
在这个示例中,我们定义了一个名为getLocalIP的函数,它返回一个Promise。在函数内部,我们首先检测浏览器是否支持WebRTC,然后创建一个RTCPeerConnection对象并设置onicecandidate事件处理程序。当产生ICE候选时,我们解析出IP地址并通过Promise的resolve方法返回。
运行以上代码,你会得到类似如下的输出:
Your local IP address is: 192.168.1.100
总结
本文介绍了两种通过JavaScript获取当前电脑IP地址的方法:利用第三方服务和利用WebRTC技术。前者简单易用,适用于大多数情况下;后者更加灵活且不依赖于外部服务,但需要较复杂的实现。根据实际需求和项目特点,选择适合的方法来获取IP地址。
极客笔记