gpt4 book ai didi

javascript - 如何使用 JavaScript 获取本地/内部 IP

转载 作者:可可西里 更新时间:2023-11-01 02:31:46 25 4
gpt4 key购买 nike

如何使用 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)。

最佳答案

更新

不幸的是,由于浏览器出于安全考虑更改了此行为,因此以下答案不再有效。参见 this StackOverflow Q&A for more details .


我从哪里获取代码 --> Source

您可以在 --> Demo 找到演示

我修改了源代码,减少了行数,没有发出任何 stun 请求,因为您只需要本地 IP 而不是公共(public) 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;
};

这里发生的事情是,我们正在创建一个虚拟对等连接,为了让远程对等方联系我们,我们通常会相互交换 ice candidates。读取 ice candidates 我们可以知道用户的 ip。

关于javascript - 如何使用 JavaScript 获取本地/内部 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32837471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com