2017-04-26 17 views
0

パブリックIPアドレスを返すためのシンプルな関数を探しています。 私はこの機能に出くわした:javacriptでパブリックIPアドレスを取得

const clientsIpAdress = (onNewIP) => { 
    const MyPeerConnection = 
    window.RTCPeerConnection || 
    window.mozRTCPeerConnection || 
    window.webkitRTCPeerConnection; 
    const pc = new MyPeerConnection({ 
    iceServers: [] 
    }); 
    const noop =() => {}; 
    const localIPs = {}; 
    const ipRegex = 
    /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g; 

    const iterateIP = (ip) => { 
    if (!localIPs[ip]) onNewIP(ip); 
    localIPs[ip] = true; 
    }; 
    pc.createDataChannel(''); 
    pc.createOffer().then((sdp) => { 
    sdp.sdp.split('\n').forEach((line) => { 
     if (line.indexOf('candidate') < 0) return; 
     line.match(ipRegex).forEach(iterateIP); 
    }); 

    pc.setLocalDescription(sdp, noop, noop); 
    }); 
    pc.onicecandidate = (ice) => { 
    if (!ice || !ice.candidate || 
     !ice.candidate.candidate || 
     !ice.candidate.candidate.match(ipRegex)) return; 
    ice.candidate.candidate.match(ipRegex).forEach(iterateIP); 
    }; 
}; 
export default clientsIpAddress; 

が、それは地元のipAddressのを返しています。何か案は?

+0

あなたは、そのアドレスを決定するために別のソースを使用する必要があります。ローカルマシンは、一般にパブリックアドレスを知らない。 – Stese

+0

ありがとう!私はjavascriptに新しいので、私はこの作業を完了する必要があります。私にガイドラインを教えてもらえますか? – user7334203

+0

https://api.ipify.org/ – briosheje

答えて

1

$(document).ready(function() { 
 
    $.getJSON("http://jsonip.com/?callback=?", function (data) { 
 
     console.log(data); 
 
     alert(data.ip); 
 
    }); 
 
});
<html> 
 
<head> 
 
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> 
 
</head> 
 
</html>

+0

すみません、間違いました。私は公共のIPがローカルではないことを望む。私は私の記述でこれを書いたが、タイトルには書かなかった:P – user7334203

+0

ああ、私の答えを編集するつもりです。 –

+0

あなたが役に立つかどうかを承認することができます! @ user7334203 –

関連する問題