美文网首页
JS通过webRTC获取设备IP

JS通过webRTC获取设备IP

作者: Jessiewu_e94b | 来源:发表于2020-03-04 15:02 被阅读0次

RTCPeerConnection 接口代表一个由本地计算机到远端的WebRTC连接。该接口提供了创建,保持,监控,关闭连接的方法的实现

WebRTC在浏览器中的兼容性。参考:

var PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;

(其他请查看https://developer.mozilla.org/zh-CN/docs/Web/API/RTCPeerConnection)

构造函数:RTCPeerConnection.RTCPeerConnection() ,创建一个新的RTCPeerConnection对象。

/**

* Get the user IP throught the webkitRTCPeerConnection

* @param onNewIP {Function} listener function to expose the IP locally

* @return undefined

*/

function getUserIP(onNewIP) { //  onNewIp - your listener function for new IPs

    //compatibility for firefox and chrome

    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}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,

    key;

    function iterateIP(ip) {

        if (!localIPs[ip]) onNewIP(ip);

        localIPs[ip] = true;

    }

    //create a bogus data channel

    pc.createDataChannel("");

    // create offer and set local description

    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

    });

    //listen 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);

    };

}

// Usage

getUserIP(function(ip){

    alert("Got IP! :" + ip);

});

————————————————

原文链接:https://www.cnblogs.com/zyh-club/p/11097418.html

相关文章

网友评论

      本文标题:JS通过webRTC获取设备IP

      本文链接:https://www.haomeiwen.com/subject/xgcmlhtx.html