如何用js获取ip地址

获取 ip 地址的方法:直接获取webrtc api。使用 navigator.mediadevices.getusermedia()。通过服务器代理发送 ajax 或 fetch 请求。如何用 JavaScript 获取 IP 地址
直接

获取 ip 地址的方法:直接获取webrtc api。使用 navigator.mediadevices.getusermedia()。通过服务器代理发送 ajax 或 fetch 请求。

如何用js获取ip地址

如何用 JavaScript 获取 IP 地址

直接获取

  • WebRTC API
async function getIP() {
  const configuration = {
    iceServers: [
      {
        urls: ['stun:stun.l.google.com:19302']
      }
    ]
  };
  const peerConnection = new RTCPeerConnection(configuration);
  const iceCandidate = await new Promise((resolve) => {
    peerConnection.onicecandidate = (e) => {
      if (e.candidate && e.candidate.type === 'srflx') {
        resolve(e.candidate.address);
      }
    };
  });
  peerConnection.close();
  return iceCandidate;
}

登录后复制

  • navigator.mediaDevices.getUserMedia()
async function getIP() {
  const mediaStream = await navigator.mediaDevices.getUserMedia({ video: false, audio: false });
  const peerConnection = new RTCPeerConnection();
  const sender = peerConnection.addTrack(mediaStream.getTracks()[0], mediaStream);
  const iceCandidate = await new Promise((resolve) => {
    peerConnection.onicecandidate = (e) => {
      if (e.candidate && e.candidate.type === 'srflx') {
        resolve(e.candidate.address);
      }
    };
  });
  sender.stop();
  peerConnection.close();
  return iceCandidate;
}

登录后复制

通过服务器代理

  • 使用 AJAX 或 fetch

向服务器发送请求,服务器响应中包含 IP 地址。

async function getIP() {
  const response = await fetch('/get-ip');
  const data = await response.json();
  return data.ip;
}

登录后复制

注意事项

  • WebRTC API 和 navigator.mediaDevices.getUserMedia() 只能在安全连接(HTTPS)上使用。
  • 服务器代理方法需要后端支持。
  • 获取到的 IP 地址可能是本地 IP 地址,而不是外部 IP 地址。

以上就是如何用js获取ip地址的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:老板不要肥肉,转转请注明出处:https://www.dingdanghao.com/article/578402.html

(0)
上一篇 2024-06-06 09:20
下一篇 2024-06-06 09:20

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号