javascript - 如何通过 WebRTC 请求获取客户端的 MAC 地址?
问题描述
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地址?
解决方案
不,您无法在浏览器中使用 Javascript 获取 MacAdress。有很好的理由。这将是一个很大的安全风险。
MAC地址唯一标识正在运行的计算机,手机......基本上每个设备,内部IP都没有。
如果你想用 Javascript 来做,你需要使用 Electron 或 Node。
推荐阅读
- python - 为什么通过pandas合并后dataframe会变空?
- javascript - Wordpress 响应式下拉菜单 - 第一次单击忽略链接并打开下拉菜单,第二次单击转到 url
- jwt - Vertx JWKS/JWT 验证抛出 500 且未记录错误
- microsoft-graph-api - 我们如何抑制通过 MS Outlook 日历事件 REST API 创建的事件的通知电子邮件
- interop - 从 aws-amplify 绑定到高阶组件
- reactjs - 汇总,样式化组件 - “withComponent 不是函数”错误
- javascript - 你能有多种方法在 Javascript 中运行一个函数吗?
- java - 如何将 JSONObject 写入 firebase 数据库节点
- javascript - HTML按钮不与Javascript交互
- reactjs - 将 ra-data-graphql 与 AppSync GraphQL API 一起使用