我知道我们可以通过IE(ActiveX对象)获取用户的MAC地址。

是否可以使用JavaScript获取用户的MAC地址?

#1 楼

我同意所有先前的回答,如果您能够直接从Javascript执行此操作,则它将是一个隐私/安全漏洞。我可以想到两件事:


使用Java(带有签名的applet)
使用签名的Javascript,在FF(通常是Mozilla)中,它比普通的JS(但设置起来相当复杂)


评论


我很想知道,我们可以通过JavaScript从用户那里获得诸如mac地址或序列号之类的独特信息吗?还是PC名称?

– Flamur Beqiraj
19 Mar 1 '19 at 12:49

#2 楼

快速简单的答案是否。

Javascript是一种高级语言,无法访问此类信息。

评论


那所有提供示例代码以获取MAC地址的Google搜索结果呢?

–月亮
2010-12-26 at 2:53

我快速浏览了一下Google,我阅读的所有页面都是仅使用IE的解决方案,它依赖于使用ActiveX对象。如果您可以发布一个显示其他内容的链接...

–GateKiller
2011年1月12日在16:52

我真的不认为成为“高级语言”与MAC地址有任何关系,因为任何服务器端编程语言都允许您访问ARP表,甚至可以间接访问(例如通过子进程)。我认为“客户端语言”会更好。

–kirbyfan64sos
16-10-6在19:51

没有理由为什么高级语言无法访问低级硬件信息。在这种情况下,这不会发生,因为这将是一个安全问题。

–nsn
17年5月7日在9:37

#3 楼

不,您无法在JavaScript中获取MAC地址,主要是因为MAC地址唯一地标识正在运行的计算机,因此这将是一个安全漏洞。如果您确实需要知道计算机的MAC地址,并且正在开发内部应用程序,那么我建议您使用外部组件为此,请执行以下操作:用于IE的ActiveX,用于Firefox的XPCOM(作为扩展安装)。

评论


您是否知道Safari的外部组件?

–user656925
2012-2-7 14:38

不。我实际上是建议创建一个。

–文森特·罗伯特
2012年2月7日在15:38

您如何建议创建一个唯一标识符?您如何使用加密算法来确保在其计算机上运行该算法的用户获得唯一的ID?

–迈克尔
2013年12月10日22:54

@Michael Wikipedia列出了几种UUID实现

–文森特·罗伯特
2013年12月11日上午10:41

#4 楼

不。 ActiveX之所以能够这样做,是因为ActiveX是在客户端计算机上运行的一个小应用程序。

我想通过JavaScript访问此类信息将是一个安全漏洞。

#5 楼

如果这是用于Intranet应用程序且所有客户端都使用DHCP,则可以查询DHCP服务器以获取给定IP地址的MAC地址。

#6 楼

我一直在寻找相同的问题,偶然发现以下代码。

如何获取客户端MAC地址(Web):

仅以这种方式获取客户端MAC地址依赖于Microsoft的JavaScript和Active X控件。仅当Active X为IE启用时,它才在IE中起作用。由于ActiveXObject在Firefox中不可用,因此无法在Firefox中使用,并且在IE中也可以正常工作。

此脚本仅适用于IE:

 function showMacAddress() {
    var obj = new ActiveXObject("WbemScripting.SWbemLocator");
    var s = obj.ConnectServer(".");
    var properties = s.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
    var e = new Enumerator(properties);
    var output;
    output = '<table border="0" cellPadding="5px" cellSpacing="1px" bgColor="#CCCCCC">';
    output = output + '<tr bgColor="#EAEAEA"><td>Caption</td><td>MACAddress</td></tr>';
    while (!e.atEnd()) {
        e.moveNext();
        var p = e.item();
        if (!p) continue;
        output = output + '<tr bgColor="#FFFFFF">';
        output = output + '<td>' + p.Caption; +'</td>';
        output = output + '<td>' + p.MACAddress + '</td>';
        output = output + '</tr>';
    }
    output = output + '</table>';
    document.getElementById("box").innerHTML = output;
}

showMacAddress(); 

 <div id='box'></div>