Node.js获取本机Mac地址的两种方案

作者:接口漫谈

时间:2026-10-25

浏览:224

本文介绍在Node.js中获取本机Mac地址的两种方法。第一种通过第三方getmac库简化调用;第二种利用Node.js内置os模块的networkInterfaces方法,遍历网络接口对象筛选IPv4地址并提取非零Mac地址。

文章目录

方案一:使用getmac库

首先我们需要引入一个用于获取Mac地址的npm包。

npm install getmac

安装完成后,在node_modules目录下会生成getmac文件夹。进入该目录并创建test.js文件,编写测试代码如下:

var npm = require('getmac');//获取mac地址
console.log('npm', npm)
console.log(npm.default())
console.log(npm.isMAC('8c:16:45:25:26:44'))

运行后打印结果如下:

方案一:使用getmac库

输出的0a:00:27:00:00:11即为当前电脑的Mac地址。

方案二:使用os库

此外,还可以不依赖第三方库,直接利用Node.js系统提供的os模块来实现。

Node.js内置的os模块提供了networkInterfaces方法,

该方法用于返回一个包含网络接口信息的对象。

返回的对象中,每个属性值均为一个数组。

该对象包含所有已分配网络地址的网络接口信息。对象的每个键代表一个网络接口名称,对应的值是一个对象数组,每个对象描述了一个分配的网络地址。这些地址对象包含以下属性:

  • address<string>:分配的IPv4或IPv6地址。
  • netmask <string>:IPv4或IPv6的子网掩码。
  • family <string>:协议版本,IPv4或IPv6。
  • mac <string>:网络接口的Mac地址。
  • internal <boolean>:若为环回接口或不可远程访问的接口,值为true,否则为false。
  • scopeid <number>:IPv6的作用域ID(仅当family为IPv6时存在)。
  • cidr <string> 以 CIDR 表示法分配的带有路由前缀的 IPv4 或 IPv6 地址。如果 netmask 无效,则此属性会被设为 null。

我们需要从中提取的IP地址与Mac地址均包含在这些数组结构中。

实现代码如下:

var os=require("os");
var networkInterfaces=os.networkInterfaces();
console.info(networkInterfaces);

运行结果如图所示:

方案一:使用getmac库

解析上述输出数据,即可找到本机的Mac地址。

var os=require("os");
var mac = ''
var networkInterfaces=os.networkInterfaces();
for(var i in networkInterfaces){
    for(var j in networkInterfaces[i]){
        if(networkInterfaces[i][j]["family"]==="IPv4" && networkInterfaces[i][j]["mac"]!=="00:00:00:00:00:00" && networkInterfaces[i][j]["address"]!=="127.0.0.1"){
            mac = networkInterfaces[i][j]["mac"]
        }
    }
}
console.log(mac) //a6:02:b9:76:93:28

总结

本文介绍了Node.js获取本机Mac地址的两种实现方式,更多相关内容请查阅本站过往文章或继续浏览后续内容,感谢支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章