Skip to content

Instantly share code, notes, and snippets.

@DiegoFleitas
Last active July 25, 2018 00:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DiegoFleitas/11104c60b5cc964289deb3890f6e6ff8 to your computer and use it in GitHub Desktop.
Save DiegoFleitas/11104c60b5cc964289deb3890f6e6ff8 to your computer and use it in GitHub Desktop.
local IP bookmarklet
javascript:(function(){/** * Get the user IP throught the webkitRTCPeerConnection * @param onNewIP {Function} listener function to expose the IP locally * @return undefined */function getUserIP(onNewIP){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;}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){});pc.onicecandidate=function(ice){if(!ice||!ice.candidate||!ice.candidate.candidate||!ice.candidate.candidate.match(ipRegex))return;ice.candidate.candidate.match(ipRegex).forEach(iterateIP);};}getUserIP(function(ip){alert(ip);});})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment