¿Cómo puedo leer el nombre de máquina/computadora del cliente desde el navegador?
¿Es posible usar JavaScript y/o ASP.NET?¿Cómo puedo leer el nombre de máquina/computadora del cliente desde el navegador?
Respuesta
Puede hacerlo con IE 'a veces', ya que he hecho esto para una aplicación interna en una intranet que es solo IE. Pruebe lo siguiente:
function GetComputerName() {
try {
var network = new ActiveXObject('WScript.Network');
// Show a pop up if it works
alert(network.computerName);
}
catch (e) { }
}
Se puede o no requerir alguna configuración específica configuración de seguridad en Internet Explorer, así para permitir que el navegador para acceder al objeto ActiveX.
Aquí hay un enlace a algo más de información sobre WScriptl: More Information
No es posible obtener el nombre de la computadora de los usuarios con Javascript. Puede obtener todos los detalles sobre el navegador y la red. Pero no más que eso.
Al igual que alguien respondió en una de las preguntas anteriores hoy.
Ya hice un favor al visitar su sitio web, puede ser que regrese o consulte a otros amigos .. También le dije dónde estoy y qué sistema operativo, navegador y resolución de pantalla utilizo ¿Por qué quiere saber el color de mi ropa interior? ;-)
No puede hacerlo usando asp.net también.
Eh, si está creando una aplicación interna en una configuración empresarial, se sorprenderá de lo útil que sería saber esta información. Realizamos un seguimiento de los errores en nuestra aplicación, y las direcciones IP que usa el usuario cambian según su entorno (wifi, LAN, VPN). Ser capaz de obtener el nombre de su computadora de los registros enviados al servidor desde el cliente, y el uso de herramientas empresariales para ver el software instalado y los parches de Windows en esa máquina es posible. Sin acceso directo a la computadora. Ayuda mucho en la resolución de problemas sin tener que involucrar al empleado no técnico. –
No esta información no está expuesta. La única información disponible es la que está expuesta a través de la solicitud HTTP, que puede incluir su sistema operativo y otra información similar. Pero ciertamente no es el nombre de la máquina.
navegador, sistema operativo, colores de la pantalla, resolución de pantalla, la versión de Flash y ayuda Java todos deben ser detectables desde JavaScript (y tal vez un poco más) . Sin embargo, el nombre de la computadora no es posible.
EDITAR: No es posible en todos los navegadores al menos.
Bien podrías obtener la dirección IP usando asp.net, luego hacer una búsqueda DNS inversa en el ip para obtener el nombre de host.
Del libro de cocina del desarrollador de ASP.NET ... Performing a Reverse-DNS Lookup.
Ejecuto ese código con 192.168.1.100 (dirección IP del navegador de alojamiento de la máquina) y aparece un error: 'Error: el nombre solicitado es válido, pero no se encontraron datos del tipo solicitado' – BigOmega
192.168. *. * Es un dirección IP privada, necesitará ejecutar el código en una computadora en la red privada y tener un servidor DNS en la red para que esto funcione. – Mark
Esto no es posible en algunos casos, ya que el servidor web puede estar detrás de un proxy/firewall avanzado. Entonces, todo lo que obtendrá será la dirección IP/nombre de host de este proxy/firewall. Esto es típicamente para grandes webfarms. Así que asegúrese de verificar la topología de la red de producción final antes de implementar esto. – JDC
Hicimos algo como esto para una herramienta de seguimiento de errores de inhouse, que nos llevaron a cabo antes de ir en vivo, pero creo que sería trabajar Creo que un estudiante Coop encuentra en el Internet en alguna parte :)
using System;
using System.Management;
using System.Windows.Forms;
namespace ComputerInfo
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class CPUInfo
{
#region Properties
private String osVersion;
public String OSVersion
{
get { return this.osVersion; }
}
private String machineName;
public String MachineName
{
get { return this.OSVersion; }
}
private int width;
public int ScreenWidth
{
get { return this.width; }
}
private int height;
public int ScreenHeight
{
get { return this.height; }
}
private String userName;
public String UserName
{
get { return this.userName; }
}
private String clockSpeed;
public String ClockSpeed
{
get { return this.clockSpeed; }
}
private String procName;
public String ProcessorName
{
get { return this.procName; }
}
private String manufacturer;
public String ProcessorManufacturer
{
get { return this.manufacturer; }
}
private String version;
public String ProcessorVersion
{
get { return this.version; }
}
private double ram;
public double RAM
{
get { return this.ram; }
}
private bool usehtml;
public bool UseHTMLFormatting
{
get { return this.usehtml; }
set { usehtml = value; }
}
#endregion
public CPUInfo() : this(false)
{
}
public CPUInfo(bool use_html_formatting)
{
usehtml = use_html_formatting;
osVersion = System.Environment.OSVersion.ToString() ;
machineName = System.Environment.MachineName.ToString();
width = Screen.PrimaryScreen.Bounds.Width;
height = Screen.PrimaryScreen.Bounds.Height;
userName = "";
clockSpeed = "";
procName = "";
manufacturer = "";
version = "";
ram = 0.0d;
getMachineInfo();
}
private void getMachineInfo()
{
try
{
using(ManagementObjectSearcher win32Proc = new ManagementObjectSearcher("select * from Win32_Processor"),
win32CompSys = new ManagementObjectSearcher("select * from Win32_ComputerSystem"),
win32Memory = new ManagementObjectSearcher("select * from Win32_PhysicalMemory"))
{
foreach (ManagementObject obj in win32Proc.Get())
{
clockSpeed = obj["CurrentClockSpeed"].ToString();
procName = obj["Name"].ToString();
manufacturer = obj["Manufacturer"].ToString();
version = obj["Version"].ToString();
}
Sí, esto es genial si quieres información sobre el servidor! –
Este es el código del lado del servidor – Gemasoft
Erm ¿hay alguna razón por la que no puedas usar simplemente HttpRequest? Esto sería del lado del servidor, pero ¿podría pasarlo a javascript si fuera necesario?
Page.Request.UserHostName
El único problema con esto es que sólo sería realmente trabajar en un entorno Intranet de lo contrario se acaba de terminar recogiendo el router usuarios o la dirección de proxy ...
Page.Request.UserHostName
es también "genial si quieres información sobre el servidor"
¿Pero por qué? El nombre implica que devuelve lo que queremos.Y el equivalente ServerVariables
se anuncia en los sitios de Microsoft haciendo lo que queremos, es decir, dando el nombre de host del control remoto. Sin embargo, ambos me dan la dirección IP (no el nombre) del host que ejecuta IIS.
Intente obtener el nombre de la computadora del cliente en Mozilla Firefox utilizando el siguiente código.
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;
Además, el mismo fragmento de código se puede poner como una extensión, y se puede llamar desde su página web.
Encuentra el código de muestra a continuación.
código de extensión:
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
Código Página Web:
<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>
¡Funciona para mi tarea! ¡Muchas gracias! – zhekaus
<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>
</form>
</body>
</html>
No hay manera de hacerlo, como JavaScript no tiene acceso al nombre del equipo, sistema de archivos y otra información local Esto es parte de la especificación de JavaScript. La seguridad es el objetivo principal.
"Esto es parte de la especificación JavaScript" - No lo es. Esas son cosas que * no * son parte de la especificación del lenguaje. Cuando están disponibles, es a través de funciones proporcionadas por el entorno de host. Los navegadores no los proporcionan. NodeJS lo hace. (Para tomar dos ejemplos comunes). – Quentin
Gracias @Quentin, buena corrección. Es la limitación del navegador, por razones de seguridad. – Denys
Una versión actualizada de Kelsey:
$(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;
});
para almacenar el valor, agregar estos controles:
<asp:HiddenField ID="currUserID" runat="server" /> <asp:HiddenField ID="currMachineName" runat="server" /> <asp:HiddenField ID="currMachineDOmain" runat="server" />
donde también podrán llamar desde detrás de la siguiente manera:
Page.ClientScript.RegisterStartupScript(this.GetType(), "MachineInfo", "GetInfo();", true);
Por qué estamos limitando el alcance y por qué no prueba el siguiente que puede plantear problemas debido a inconsistencias configuración de DNS.
InetAddress inet=InetAddress.getByName(request.getRemoteAddr().trim());
System.out.println(" host name is : "+inet.getHostName());
- 1. Android leer el historial del navegador
- 2. Leer hora del navegador/cliente desde Http Cabecera de solicitud de servlet
- 3. Determinar el nombre del equipo del cliente
- 4. ¿Cómo puedo obtener información del cliente, como el sistema operativo y el navegador
- 5. PHP: obtenga el nombre del navegador
- 6. Leer la variable de Javascript desde el control del navegador web
- 7. Detección del navegador del cliente en Vaadin
- 8. Leer desde el socket
- 9. ¿Cómo puedo obtener el idioma del navegador en node.js (express.js)?
- 10. ¿Manera rápida de leer el nombre del archivo desde el directorio?
- 11. Cómo imprimir un PDF desde el navegador
- 12. Hash de contraseñas en el navegador del cliente
- 13. Cómo leer el nombre del elemento html helper
- 14. ¿El URL del Doctype HTML es descargado por el navegador del cliente?
- 15. ¿Cómo puedo detectar si ActiveX está habilitado en el navegador del cliente?
- 16. Detectar solicitudes AJAX en el navegador (lado del cliente)
- 17. leer el archivo txt a través del cliente javascript
- 18. ¿Cómo leer el contenido del archivo desde un archivo?
- 19. leer el nombre de las propiedades desconocidas
- 20. ASP.Net Descargar archivo en el navegador del cliente
- 21. Obteniendo el nombre de host del cliente en Node.js
- 22. Obtener el nombre del sistema operativo del cliente
- 23. ¿Cómo puedo leer el valor del contador de CSS aplicado?
- 24. Ejecutar Silverlight fuera del navegador desde el navegador después de la instalación
- 25. Cómo comprobar si JavaScript está habilitado en el navegador del cliente utilizando el código de Java
- 26. Obtener el nombre del archivo ejecutable desde el método main()
- 27. Django: cómo leer el nombre db_column de un campo modelo
- 28. Evento del servidor ASP.net manejado desde el lado del cliente
- 29. ¿Cambiar el nombre del archivo enviado al cliente?
- 30. ¿Cómo puedo leer una imagen desde una URL en Java?
No estoy seguro, pero probablemente no está permitido por la política de seguridad JS –
Bueno, habría que agregar un campo de entrada y pedir al usuario que escriba en su nombre de equipo ;-) –
la razón es para un sistema de soporte de TI donde el cliente quiere poder adjuntar el nombre de la computadora/máquina a un boleto enviado por el usuario – BigOmega