前端JS获取设备IP地址和唯一标识

获取设备IP地址

function getIPs(callback) {
        var ip_dups = {};
//compatibility for firefox and chrome
        var RTCPeerConnection = window.RTCPeerConnection
          || window.mozRTCPeerConnection
          || window.webkitRTCPeerConnection;
//bypass naive webrtc blocking
        if (!RTCPeerConnection) {
          var iframe = document.createElement("iframe");
//invalidate content script
          iframe.sandbox = "allow-same-origin";
          iframe.style.display = "none";
          document.body.appendChild(iframe);
          var win = iframe.contentWindow;
          window.RTCPeerConnection = win.RTCPeerConnection;
          window.mozRTCPeerConnection = win.mozRTCPeerConnection;
          window.webkitRTCPeerConnection = win.webkitRTCPeerConnection;
          RTCPeerConnection = window.RTCPeerConnection
            || window.mozRTCPeerConnection
            || window.webkitRTCPeerConnection;
        }
        var mediaConstraints = {
          optional: [{RtpDataChannels: true}] };
//firefox already has a default stun server in about:config
// media.peerconnection.default_iceservers =
// [{"url": "stun:stun.services.mozilla.com"}] var servers = undefined;
//add same stun server for chrome
        if(window.webkitRTCPeerConnection)
         var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
//construct a new RTCPeerConnection
        var pc = new RTCPeerConnection(servers, mediaConstraints);
//listen for candidate events
        pc.onicecandidate = function(ice){
//skip non-candidate events
          if(ice.candidate){
//match just the IP address
            var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
            var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
//remove duplicates
            if(ip_dups[ip_addr] === undefined)
              callback(ip_addr);
            ip_dups[ip_addr] = true;
          }
        };
//create a bogus data channel
        pc.createDataChannel("");
//create an offer sdp
        pc.createOffer(function(result){
//trigger the stun server request
          pc.setLocalDescription(result, function(){}, function(){});
        }, function(){});
      },
getIPs(function(ip){
        // alert("本机IP地址为:"+ ip);
      });

获取设备唯一标识(需要借助hbuilder生成的app壳)

plusReady(){
        alert( "uuid: "+plus.device.uuid );
      },
if(window.plus){
       plusReady();
      }else{
        document.addEventListener("plusready",plusReady,false);
      }

通过JS获取真实的外网IP和内网IP以及IPv6地址
Device模块管理设备信息,用于获取手机设备的相关信息

你可能感兴趣的:(前端JS获取设备IP地址和唯一标识)