手机版 收藏 导航

如何使用 JavaScript 获取客户端 IP 地址

原创   www.link114.cn   2024-07-03 08:34:38

如何使用 JavaScript 获取客户端 IP 地址

RTCPeerConnection API 是 WebRTC 标准的一部分,它可用于建立点对点的连接。通过使用这个 API,我们可以获取客户端的公网 IP 地址。以下是一个示例代码:


function getClientIP() {
  return new Promise((resolve, reject) => {
    const pc = new RTCPeerConnection({
      iceServers: []
    });
    pc.createDataChannel("");
    pc.createOffer(pc.setLocalDescription.bind(pc), reject);
    pc.onicecandidate = event => {
      if (event.candidate) {
        const ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
        const ip = event.candidate.candidate.match(ip_regex)[1];
        pc.onicecandidate = null;
        resolve(ip);
      }
    };
  });
}

另一种获取客户端 IP 地址的方法是发送 HTTP 请求到一个提供 IP 地址信息的服务。以下是一个示例代码:


function getClientIP() {
  return fetch('https://api.ipify.org?format=json')
    .then(response => response.json())
    .then(data => data.ip);
}

无论使用哪种方法,都需要注意客户端隐私和安全的问题。在使用这些方法时,请确保获取客户端 IP 地址的目的是合法和必要的。