Получение MAC-адреса клиента с помощью браузера

У меня следующая проблема: У меня есть веб-сервер. Этот сервер находится за маршрутизатором. Проблема в том, что мне нужен MAC-адрес клиента, который открывает веб-сайт на сервере для дальнейших целей. Я уже пытался получить MAC-адрес через ActiveX-объект, но клиенту нужен установленный WMI. Вот собственно код:

<!DOCTYPE  HTML  PUBLIC  "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
        <title></title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <script id="clientEventHandlersJS" language="javascript">

function Button1_onclick() {
  var locator = new ActiveXObject("WbemScripting.SWbemLocator");
  var service = locator.ConnectServer(".");
  var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
  var e = new Enumerator (properties);
  document.write("<table border=1>");
  dispHeading();
  for (;!e.atEnd();e.moveNext ())
  {
        var p = e.item ();
        document.write("<tr>");
        document.write("<td>" + p.Caption + "</td>");
        document.write("<td>" + p.IPFilterSecurityEnabled + "</td>");
        document.write("<td>" + p.IPPortSecurityEnabled + "</td>");
        document.write("<td>" + p.IPXAddress + "</td>");
        document.write("<td>" + p.IPXEnabled + "</td>");
        document.write("<td>" + p.IPXNetworkNumber + "</td>");
        document.write("<td>" + p.MACAddress + "</td>");
        document.write("<td>" + p.WINSPrimaryServer + "</td>");
        document.write("<td>" + p.WINSSecondaryServer + "</td>");
        document.write("</tr>");
  }
  document.write("</table>");
}

function dispHeading()
{
    document.write("<thead>");
    document.write("<td>Caption</td>");
    document.write("<td>IPFilterSecurityEnabled</td>");
    document.write("<td>IPPortSecurityEnabled</td>");
    document.write("<td>IPXAddress</td>");
    document.write("<td>IPXEnabled</td>");
    document.write("<td>IPXNetworkNumber</td>");
    document.write("<td>MACAddress</td>");
    document.write("<td>WINSPrimaryServer</td>");
    document.write("<td>WINSSecondaryServer</td>");
    document.write("</thead>");
}

        </script>
  </head>
  <body>

        <INPUT id="Button1" type="button" value="Button" name="Button1" language="javascript" onclick="return Button1_onclick()">
  </body>

при нажатии на кнопку, она должна возвращать таблицу с конфигурацией сети, но это не работает для меня. Я хотел бы чтобы узнать, есть ли другое решение для получения MAC-адреса клиента через браузер. Я также не хочу ограничивать использование Internet Explorer. Заранее спасибо за вашу помощь.

С уважением, Крис!--2-->

2 ответов


кажется, что вы можете сделать это с помощью апплета Java, см. postst в https://forums.oracle.com/forums/thread.jspa?threadID=1144276 и http://techdetails.agwego.com/2008/02/11/37/.

Не уверен, что вам нужно, чтобы пользователь согласился с предупреждением безопасности для этого или нет, я не пробовал.

вероятно, нет лучшего способа, так как ActiveX будет работать только на Windows (и только IE), и нет такого API для получения MAC-адреса в любом стандарте HTML или JavaScript. Я не знаю, Может ли Flash быть полезен для этого, но я сомневаюсь в этом.

тем не менее, ваша причина получить MAC-адрес пользователя может показаться действительной, но я все еще думаю, что не стоит выводить какую-либо информацию, потому что она может быть подделана/изменена и может не отображаться должным образом в определенных ситуациях. Вам было бы лучше, если бы вы могли придумать лучшее решение для своей проблемы (не включая захват MAC-адресов).


в моем предыдущем проекте. мы использовали websocket в javascript браузера для связи с собственным кодом, dll c#, работающим на той же машине. Собственный код может получить любую системную информацию, MAC-адрес и другую системную информацию, такую как memeory, дисковое пространство и т. д. Узел.js можно использовать для замены C#, а также просто сломать предел Windows machin и в Mac-машину. Все приложение (браузер chrome + собственный код) было загружено на клиент с помощью install shield.