Как я могу прочитать имя компьютера / компьютера клиента из браузера? - PullRequest
46 голосов
/ 28 мая 2009

Как я могу прочитать имя компьютера / компьютера клиента из браузера?
Возможно ли использовать JavaScript и / или ASP.NET?

Ответы [ 13 ]

32 голосов
/ 28 мая 2009

Вы можете сделать это с IE 'иногда', как я сделал это для внутреннего приложения в интрасети, которое является только IE. Попробуйте следующее:

function GetComputerName() {
    try {
        var network = new ActiveXObject('WScript.Network');
        // Show a pop up if it works
        alert(network.computerName);
    }
    catch (e) { }
}

Может потребоваться или не потребоваться настройка определенных параметров безопасности в IE, а также разрешить браузеру доступ к объекту ActiveX.

Вот ссылка на дополнительную информацию о WScript: Дополнительная информация

12 голосов
/ 28 мая 2009

Браузер, операционная система, цвета экрана, разрешение экрана, версия Flash и поддержка Java должны быть обнаружены с помощью JavaScript (и, возможно, еще нескольких). Однако имя компьютера невозможно.

РЕДАКТИРОВАТЬ: не возможно по крайней мере во всех браузерах.

10 голосов
/ 28 мая 2009

Что ж, вы можете получить IP-адрес с помощью asp.net, а затем выполнить обратный поиск DNS по IP-адресу, чтобы получить имя хоста.

Из поваренной книги разработчика ASP.NET ... Выполнение обратного DNS-поиска .

7 голосов
/ 28 мая 2009

Невозможно получить имя компьютера пользователя с помощью Javascript. Вы можете получить все подробности о браузере и сети. Но не более того.

Как кто-то ответил сегодня на один из предыдущих вопросов.

Я уже сделал одолжение посетить ваш сайт, может быть, я вернусь или порекомендую других друзей .. Я также рассказал вам, где я и какую ОС, браузер и разрешение экрана я использую Почему вы хотите знать цвет мое нижнее белье? ; -)

Вы также не можете сделать это с помощью asp.net.

3 голосов
/ 08 марта 2012

Попробуйте получить имя клиентского компьютера в Mozilla Firefox, используя приведенный ниже код.

netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect' ); 

var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"]; 
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;

Кроме того, тот же фрагмент кода может быть добавлен в качестве расширения и может вызываться с вашей веб-страницы.

Пожалуйста, найдите образец кода ниже.

Добавочный код:

var myExtension = {
  myListener: function(evt) {

//netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect' ); 
var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"]; 
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;
content.document.getElementById("compname").value = compName ;    
  }
}
document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true); //this event will raised from the webpage

Код веб-страницы:

<html>
<body onload = "load()">
<script>
function showcomp()
{
alert("your computer name is " + document.getElementById("compname").value);
}
function load()
{ 
//var element = document.createElement("MyExtensionDataElement");
//element.setAttribute("attribute1", "foobar");
//element.setAttribute("attribute2", "hello world");
//document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("MyExtensionEvent", true, false);
//element.dispatchEvent(evt);
document.getElementById("compname").dispatchEvent(evt); //this raises the MyExtensionEvent event , which assigns the client computer name to the hidden variable.
}
</script>
<form name="login_form" id="login_form">
<input type = "text" name = "txtname" id = "txtnamee" tabindex = "1"/>
<input type="hidden" name="compname" value="" id = "compname" />
<input type = "button" onclick = "showcomp()" tabindex = "2"/>

</form>
</body>
</html>
2 голосов
/ 28 мая 2009

Нет, эти данные не выставляются. Единственные доступные данные - это то, что предоставляется через HTTP-запрос, который может включать их ОС и другую подобную информацию. Но, конечно, не имя машины.

0 голосов
/ 19 июля 2017

Почему мы ограничиваем область действия и почему бы вам не попробовать следующую, которая может вызвать проблемы из-за несовместимой конфигурации DNS.

InetAddress inet=InetAddress.getByName(request.getRemoteAddr().trim());
System.out.println(" host name is   : "+inet.getHostName());
0 голосов
/ 15 августа 2016

Обновленная версия от Келси:

$(function GetInfo() {
    var network = new ActiveXObject('WScript.Network');
        alert('User ID : ' + network.UserName + '\nComputer Name : ' + network.ComputerName + '\nDomain Name : ' + network.UserDomain);
        document.getElementById('<%= currUserID.ClientID %>').value = network.UserName;
        document.getElementById('<%= currMachineName.ClientID %>').value = network.ComputerName;
        document.getElementById('<%= currMachineDOmain.ClientID %>').value = network.UserDomain;
});

Чтобы сохранить значение, добавьте эти элементы управления:

<asp:HiddenField ID="currUserID" runat="server" /> <asp:HiddenField ID="currMachineName" runat="server" /> <asp:HiddenField ID="currMachineDOmain" runat="server" />

Где вы также можете звонить сзади так:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MachineInfo", "GetInfo();", true);
0 голосов
/ 07 июня 2016

Нет никакого способа сделать это, поскольку у JavaScript нет доступа к имени компьютера, файловой системе и другой локальной информации. Это часть спецификации JavaScript. Безопасность - главная цель.

0 голосов
/ 30 января 2016
<html>
<body onload = "load()">
<script>
  function load(){ 

     try {
       var ax = new ActiveXObject("WScript.Network");
       alert('User: ' + ax.UserName );
       alert('Computer: ' + ax.ComputerName);
     }
     catch (e) {
       document.write('Permission to access computer name is denied' + '<br />');
     } 
  }
</script>
</body>
</html>
...