获取本机ip地址

1、在浏览器输入
chrome://flags/#enable-webrtc-hide-local-ips-with-mdns
将Anonymize local IPs exposed by WebRTC.修改为disabled,这一步很重要

image.png

2、 获取ip地址

getUserIP (onNewIP) {
          let MyPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection
          let pc = new MyPeerConnection({iceServers: []})
          let noop = function () {}
          let localIPs = {}
          let ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g
          function iterateIP (ip) {
              if (!localIPs[ip]) onNewIP(ip)
              localIPs[ip] = true
          }
          pc.createDataChannel('')
          pc.createOffer().then(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)
          }).catch(function (reason) {
          // An error occurred, so handle the failure to connect
          })
          // seen for candidate events
          pc.onicecandidate = function (ice) {
              if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return
              ice.candidate.candidate.match(ipRegex).forEach(iterateIP)
          }
      },

3、在需要的地方调用

this.getUserIP((ip)=> { 
  console.log("ip",ip)
 })
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。