如何从浏览器读取客户端的机器/计算机名称?

IT技术 javascript asp.net computer-name
2021-02-02 20:22:12

如何从浏览器读取客户端的机器/计算机名称?
是否可以使用 JavaScript 和/或 ASP.NET?

6个回答

您可以“有时”使用 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 的更多信息的链接:更多信息

仅适用于 Internet Explorer,不适用于 Microsoft Edge
2021-03-24 20:22:12

浏览器、操作系统、屏幕颜色、屏幕分辨率、Flash 版本和 Java 支持都应该可以从 JavaScript 中检测到(也许还有更多)。但是,计算机名称是不可能的。

编辑:至少在所有浏览器中都不可能。

好吧,您可以使用 asp.net 获取 ip 地址,然后在该 ip 上进行反向 DNS 查找以获取主机名。

来自 ASP.NET Developer's cookbook ... Performing a Reverse-DNS Lookup

我使用 192.168.1.100(机器托管浏览器的 IP 地址)运行该代码,它给出了一个错误:“错误:请求的名称有效,但未找到请求类型的数据”
2021-03-12 20:22:12
192.168.*.* 是一个私有 IP 地址,您需要在私有网络上的计算机上运行代码,并且网络上有一个 DNS 服务器才能使其工作。
2021-03-18 20:22:12
在某些情况下这是不可能的,因为网络服务器可能位于高级代理/防火墙之后。那么你将得到的只是这个代理/防火墙的 IP 地址/主机名。这通常适用于大型网络农场。所以在实施之前一定要检查最终的生产网络拓扑。
2021-03-18 20:22:12
如果 url 已关闭,这就是为什么不赞成仅使用 url 的答案的原因。链接可以更新吗?有人可以注入相关的代码位并提供引用参考吗?
2021-03-22 20:22:12
反向 DNS 断开链接
2021-04-09 20:22:12

无法使用 Javascript 获取用户计算机名称。您可以获得有关浏览器和网络的所有详细信息。但不止于此。

就像有人在今天上一个问题中的一个回答一样。

我已经帮您访问了您的网站,可能是我会回来或推荐其他朋友..我还告诉您我在哪里,我使用的操作系统,浏览器和屏幕分辨率为什么您想知道我的内衣颜色?;-)

你也不能使用 asp.net 来做到这一点。

@JohnathonSullinger 对于内部应用程序,您可以运行一个简单的本地主机网络服务器(作为 Windows 服务在后台运行),它返回有关用户计算机的信息,网络应用程序可以通过发出 AJAX/fetch请求来查询这些信息——显然要确保它是安全的并且只返回最少的、非秘密的数据,但它是允许 Web 应用程序与用户的台式计算机集成的一种方式。这就是戴尔服务标签查找器之类的工作方式(假设您安装了戴尔支持助手)。
2021-03-20 20:22:12
@Dai 在我们企业的 7,000 多个客户端桌面上运行网络服务器不是我们想要的。您必须修补和维护该网络服务器,然后处理不同类型的设备,如 Chromebook、Macbook、Windows ARM 和 x86 设备等。整理和管理所有这些将是一场噩梦。
2021-04-01 20:22:12
我们正在做的是从机器上提取 IP 并从 HTTP 请求中记录该服务器端。IP 地址往往会在我们的控制下发生变化,但每台设备每隔几周或几个月才会发生一次。对于支持,这通常不是问题。对于敏感的审计相关的事情,我们只是在我们的 AD 域控制器中对 IP 进行 DNS 查找,作为服务器端处理日志的一部分。然后我们写日志条目。这是有效的,因为我们所有的设备前面都有与机器名称匹配的 DNS。
2021-04-04 20:22:12
嗯,如果您正在企业环境中构建内部应用程序,您会惊讶于了解这些信息会有多大帮助。我们跟踪应用程序中的错误,并且用户使用的 IP 地址会根据他们的环境(wifi、LAN、VPN)而变化。能够从客户端发送到服务器的日志中获取他们的计算机名称,然后使用企业工具查看该机器上已安装的软件和 Windows 补丁是可能的。无需直接访问计算机。在无需让非技术员工参与的情况下,对故障排除有很大帮助。
2021-04-07 20:22:12

尝试使用下面给出的代码在 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>
注意:这段代码很旧,在任何当前版本的 Firefox 中都不起作用——甚至在扩展中也不行。
2021-03-30 20:22:12