Я знаю, что мы можем получить MAC-адрес пользователя через IE (объекты ActiveX).
Есть ли способ получить MAC-адрес пользователя с помощью JavaScript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Быстрый и простой ответ - нет.
Javascript - это язык довольно высокого уровня, и он не имеет доступа к такого рода информации.
Я быстро просмотрел Google, и все страницы, которые я прочитал, были только решением IE, которое полагалось на использование объектов ActiveX. Если бы вы могли опубликовать ссылку, показывающую иначе ...
Я действительно не думаю, что «язык высокого уровня» имеет какое-либо отношение к MAC-адресам, поскольку любой язык программирования на стороне сервера позволяет вам получить доступ к таблице ARP, даже косвенно (например, через подпроцесс). Я думаю, что "клиентский язык" подойдет лучше ...
Нет причин, по которым язык высокого уровня не имел бы доступа к информации об оборудовании низкого уровня. В этом случае этого не происходит, потому что это может быть проблемой безопасности.
Если это для приложения интрасети и все клиенты используют DHCP, вы можете запросить у DHCP-сервера MAC-адрес для данного IP-адреса.
Неа. Причина, по которой ActiveX может это сделать, заключается в том, что ActiveX - это небольшое приложение, которое запускается на машине клиента.
Я полагаю, что доступ к такой информации через JavaScript был бы уязвимостью безопасности.
Нет, вы не можете получить MAC-адрес в JavaScript, в основном потому, что MAC-адрес однозначно идентифицирует работающий компьютер, поэтому это может быть уязвимостью безопасности.
Теперь, если все, что вам нужно, это уникальный идентификатор, я предлагаю вам создать его самостоятельно, используя некоторый криптографический алгоритм, и сохранить его в файле cookie.
Если вам действительно нужно знать MAC-адрес компьютера, И вы разрабатываете для внутренних приложений, то я предлагаю вам использовать для этого внешний компонент: ActiveX для IE, XPCOM для Firefox (устанавливается как расширение).
Вы знаете о внешнем компоненте для Safari?
Нет. Я действительно предлагал создать его.
как вы предлагаете создать уникальный идентификатор? как использовать криптографический алгоритм, чтобы гарантировать, что когда-либо пользователь, запустивший его на своей машине, получит уникальный идентификатор?
@Michael Википедия перечисляет несколько Реализации UUID
Я согласен со всеми предыдущими ответами, что это было бы уязвимостью конфиденциальности / безопасности, если бы вы могли сделать это непосредственно из Javascript. Я могу думать о двух вещах:
Мне было любопытно узнать, можем ли мы получить уникальную информацию, такую как MAC-адрес, серийный номер или что-то подобное, от пользователя через JavaScript? Или имя ПК?
Я искал ту же проблему и наткнулся на следующий код.
Как получить MAC-адрес клиента (Интернет):
Чтобы получить MAC-адрес клиента, мы можем полагаться только на JavaScript и контроль Active X от Microsoft. Он работает только в IE, если Active X включен для 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>
тогда как насчет всех результатов поиска Google, предоставляющих образцы кодов для получения MAC-адреса