Javascript 如何通过WebRTC请求获取客户端的MAC地址?

Javascript 如何通过WebRTC请求获取客户端的MAC地址?,javascript,macos,Javascript,Macos,Firefox和Chrome已经实现了WebRTC,允许对STUN服务器的请求返回客户端的本地IP地址 下面的javascript代码输出客户端的本地IP地址: window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome var pc

Firefox和Chrome已经实现了WebRTC,允许对STUN服务器的请求返回客户端的本地IP地址

下面的javascript代码输出客户端的本地IP地址:

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;
    };

也可以获得MAC地址吗?

使用任何方式使用ARP。您可以使用OS API,也可以生成命令行工具、高级API或您喜爱的编程语言库。

否您无法在浏览器中使用Javascript获取MacAddress。有很好的理由。这将是一个巨大的安全风险

MAC地址唯一地标识运行中的计算机、手机……基本上是每一个设备,而内部IP则不是


如果你想使用Javascript,你需要使用Electron或Node。你知道arp吗?@oklas如果你能提供更详细的答案会更有帮助。我有一个远程服务器,可以打开与客户端的WebRTC连接。我想知道是否有办法用SDP获取客户端的MAC地址。@MOP在这种情况下,用SDP获取MAC地址是不可能的。你能告诉我确切的原因吗?看看我如何提取私有IP,但无法获得MAC地址,而这两个参数都来自同一网络接口…SDP是根据规范设计的协议。在报告中没有提到MAC。自定义实现可能有任何偏差,但在常见情况下不能保证。客户端或其本地网络上的工具在某些情况下可以确定其MAC。@MOP WebRTC是一种专门构建在IP UDP上的应用层协议。IP地址和端口足以供WebRTC进行通信。正因为如此,它不关心MAC地址,WebRTC收集这些信息毫无意义。