📅  最后修改于: 2023-12-03 15:11:50.393000             🧑  作者: Mango
在 Web 开发中,经常需要获取当前用户的 IP 地址。本文将介绍如何使用 Javascript 获取 IP 地址。
WebRTC 是一种支持浏览器之间实时通信的技术。通过 WebRTC,我们可以获取用户的 IP 地址。以下是获取 IP 地址的代码片段:
function getIP(onNewIP) {
// 通过 WebRTC 获取 IP 地址
var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var pc = new myPeerConnection({iceServers: []}),
noop = function() {},
localIPs = {},
ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/g;
function iterateIP(ip) {
if (!localIPs[ip]) onNewIP(ip);
localIPs[ip] = true;
}
pc.createDataChannel('');
pc.createOffer(function(sdp) {
sdp.sdp.split('\n').forEach(function(line) {
if (line.indexOf('candidate') < 0) return;
line.match(ipRegex).forEach(iterateIP);
});
pc.setLocalDescription(sdp, noop, noop);
}, noop);
}
调用 getIP
函数,可以获取当前用户的 IP 地址:
getIP(function(ip) {
console.log(ip);
});
除了 WebRTC,我们还可以通过第三方 API 获取 IP 地址。例如,可以使用 ipify.org 提供的 API 获取 IP 地址。以下是获取 IP 地址的代码片段:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.ipify.org?format=json', true);
xhr.onload = function() {
if (xhr.status === 200) {
var data = JSON.parse(xhr.responseText);
console.log(data.ip);
}
};
xhr.onerror = function() {
console.error('获取 IP 地址失败');
};
xhr.send();
本文介绍了两种获取 IP 地址的方法,分别是通过 WebRTC 和第三方 API。根据不同的需求,选择合适的方法即可。