📜  获取 ip 地址 js - Javascript (1)

📅  最后修改于: 2023-12-03 15:11:50.393000             🧑  作者: Mango

获取 IP 地址 - Javascript

在 Web 开发中,经常需要获取当前用户的 IP 地址。本文将介绍如何使用 Javascript 获取 IP 地址。

1. 通过 WebRTC 获取 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);
});
2. 通过第三方 API 获取 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();
3. 总结

本文介绍了两种获取 IP 地址的方法,分别是通过 WebRTC 和第三方 API。根据不同的需求,选择合适的方法即可。