如何使用WebRTC获取本地客户端IP.
我不需要客户端的REMOTE_ADDR,而是他的本地网络IP.
我之前在像sharedrop.com这样的网站上看过这个,它使用WebRTC识别同一网络中的计算机.
在PHP中,我这样做是为了让客户端远程IP:
<?PHP echo $_SERVER["REMOTE_ADDR"]; // which would return 72.72.72.175 ?>
我查看了stackoverflow,但每个问题都是使用远程地址解决的.
如何使用JavaScript而不是远程地址获取本地IP(例如192.168.1.24).
解决方法
我从哪里获取代码 – >
Source
您可以在 – >找到演示. Demo
我修改了源代码,减少了行数,没有发出任何眩晕请求,因为你只想要本地IP而不是公共IP,下面的代码适用于最新的Firefox和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; };
这里发生的是,我们正在创建一个虚拟对等连接,并且为了让远程对等方联系我们,我们通常会互相交换冰候选者.阅读冰糖,我们可以告诉用户的IP.