How to get local/internal IP with JavaScript

前端 未结 2 858
耶瑟儿~
耶瑟儿~ 2020-12-14 11:33

How can I get the local client IP using WebRTC.

I don\'t need the REMOTE_ADDR of the client but his local network IP. I\'ve seen this b

2条回答
  •  [愿得一人]
    2020-12-14 11:50

    where I took code from --> Source

    You can find a demo at --> Demo

    I have modified the source code, reduced the lines, not making any stun requests since you only want Local IP not the Public IP, the below code works in latest Firefox and Chrome:

        window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;   //compatibility for firefox and chrome
        var pc = new RTCPeerConnection({iceServers:[]}), noop = function(){};      
        pc.createDataChannel("");    //create a bogus data channel
        pc.createOffer(pc.setLocalDescription.bind(pc), noop);    // create offer and set local description
        pc.onicecandidate = function(ice){  //listen for candidate events
            if(!ice || !ice.candidate || !ice.candidate.candidate)  return;
            var myIP = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];
            console.log('my IP: ', myIP);   
            pc.onicecandidate = noop;
        };
    

    what is happening here is, we are creating a dummy peer connection, and for the remote peer to contact us, we generally exchange ice candidates with each other. And reading the ice candiates we can tell the ip of the user.

提交回复
热议问题