
Obtener MAC address con JavaScript es un tema que genera mucho interés en la comunidad de desarrolladores web. A lo largo de este artículo, exploraremos en profundidad qué es la dirección MAC, por qué resulta importante para ciertos escenarios de red y si realmente es viable o no obtenerla directamente desde JavaScript en el navegador. También hablaremos acerca de la API WebRTC, la preocupación por la privacidad y las limitaciones de seguridad que usualmente impiden acceder a detalles de hardware de un dispositivo. Al final, encontrarás una visión más clara sobre lo que se puede y no se puede hacer con esta tecnología.
Introducción al concepto de la dirección MAC

La dirección MAC (Media Access Control) es un identificador único asignado a la tarjeta de red de un dispositivo. Está compuesta por seis pares de dígitos (números o letras), tradicionalmente separados por dos puntos o guiones. Un ejemplo de dirección MAC podría ser 00:1A:2B:3C:4D:5E. Esta serie de caracteres se emplea para identificar de manera inequívoca a cada dispositivo en una red local.
Aunque muchas veces el término dirección MAC se asocia directamente con tarjetas Ethernet en equipos de escritorio o portátiles, lo cierto es que también aplica para adaptadores Wi-Fi, y cualquier otro tipo de hardware de conexión de red. De esta manera, tu teléfono inteligente, tu tablet o incluso tu consola de videojuegos, cada uno cuenta con su propia dirección MAC.
¿Por qué es importante la dirección MAC?
Antes de profundizar en el rol de JavaScript, es esencial entender la relevancia de la dirección MAC en la comunicación de red. En una LAN (Local Area Network), cuando un dispositivo envía o recibe datos, la red utiliza la dirección MAC para localizar el hardware específico y encaminar la información. Este nivel de operación ocurre en la capa de enlace de datos del modelo OSI.
Por lo tanto, cuando te conectas a un router, tu dispositivo asocia su dirección MAC con una dirección IP local. Para comunicarse con otro equipo en la red, el router emplea tablas ARP (Address Resolution Protocol) y así determina qué dirección MAC corresponde a la IP de destino. Sin esta asignación, no habría forma de saber a qué hardware, dentro de la red local, enviar los paquetes.
¿Realmente se puede obtener la MAC con JavaScript?

Si bien la idea de obtener la dirección MAC con JavaScript en un sitio web suena tentadora, debemos abordar el tema con cautela. Tradicionalmente, JavaScript carece de permisos para acceder a aspectos tan específicos y sensibles del sistema de red del usuario, porque implicaría una brecha de privacidad.
Los navegadores modernos cuentan con numerosas medidas de seguridad para proteger la información sensible del usuario. Obtener la dirección MAC se considera un riesgo potencial de identificación rastreable. Por este motivo, Chrome, Firefox, Safari y la mayoría de navegadores restringen el acceso a la dirección MAC a través de simples scripts.
Por tanto, no existe una forma nativa ni estándar en JavaScript para extraer la dirección MAC en el entorno del navegador. Cualquier método que prometa lograrlo se enfrentará a múltiples obstáculos de seguridad, o dependerá de vulnerabilidades muy específicas, ya corregidas en versiones modernas.
Sobre la API WebRTC y su relación con la MAC
La API WebRTC (Web Real-Time Communication) permite realizar comunicación de video y audio entre navegadores de manera directa. Al habilitar ciertos aspectos de red para estas comunicaciones punto a punto, en sus inicios WebRTC ofrecía acceso a metadatos de la conexión, incluyendo direcciones IP locales.
Sin embargo, el proyecto WebRTC ha evolucionado para reducir la filtración de información que pueda exponer la privacidad del usuario. Hoy en día, no es posible (en los navegadores más usados y actualizados) extraer la dirección MAC a través de WebRTC. Aunque antiguas implementaciones pudieron permitir ciertas lecturas, esto ha sido bloqueado por defectos de seguridad que se corrigieron con el tiempo.
Por este motivo, si lo que buscas es identificar de manera única a un dispositivo con JavaScript, lo más prudente es utilizar cookies, tokens o algun tipo de ID interno a nivel de aplicación, en lugar de la dirección MAC, pues esta última se mantiene protegida por diseño.
¿Existen métodos alternativos para obtener la dirección MAC?
Si bien no es factible hacerlo directamente en el navegador, en entornos como Node.js (que se ejecuta en el servidor o en la computadora local con acceso al sistema operativo) sí es posible leer información de la interfaz de red. Para ello, se pueden usar módulos que consulten los adaptadores del sistema y obtengan sus direcciones MAC. Sin embargo, este procedimiento implica que el script se ejecute de manera local y con los permisos adecuados.
Por ejemplo, mediante Node.js y un módulo como
require('os').networkInterfaces()
, se pueden leer las
interfaces disponibles, las IPs asignadas y, en ciertos casos, la MAC
correspondiente a cada dispositivo de red. Aun así, este método no funciona en el entorno del navegador y se limita a la máquina local, donde las credenciales
del sistema están disponibles.
Otro escenario alternativo es el de aplicaciones híbridas, por ejemplo usando frameworks como Electron o Cordova para desarrollar software de escritorio o móvil que renderice contenido web pero tenga acceso a APIs nativas. En estos casos, hay módulos que permiten leer la dirección MAC desde el sistema operativo. Nuevamente, esto ocurre fuera del ámbito de seguridad de un navegador web estándar.
Consideraciones de privacidad y seguridad
Cuando se habla de obtener la dirección MAC con JavaScript, surge una discusión inmediata sobre la privacidad. Permitir que cualquier página web lea la MAC conllevaría riesgos considerables. Un sitio malintencionado podría combinar la dirección MAC con la ubicación, datos de navegación y más información personal, resultando en un perfil detallado de la actividad del usuario.
Asimismo, esto permitiría rastrear a un dispositivo en distintos escenarios, pues la MAC no cambia tan fácilmente (salvo que la tarjeta de red habilite características de MAC aleatoria o se use software especializado). Precisamente por estas razones, los navegadores han cerrado puertas a la obtención de la MAC desde el entorno web.
¿Por qué algunas guías en línea dicen que sí se puede?
En ocasiones, encontrarás tutoriales o fragmentos de código en blogs antiguos que indican cómo descubrir la dirección MAC con JavaScript, generalmente a través de métodos de WebRTC u otros exploits. Lo cierto es que la mayoría de esas guías hacen referencia a vulnerabilidades pasadas o a la ejecución de código en un entorno restringido que ya no se comporta igual en las versiones recientes de los navegadores.
Por tanto, siempre conviene verificar la fecha de publicación del contenido que consultes y experimentar en un entorno real con las últimas versiones de navegadores. Así sabrás con certeza si el método descrito funciona o si ha sido obsoleto por parches de seguridad posteriores.
Ejemplo de código: intentos con WebRTC
A modo de ilustración, compartimos un snippet de código que se utilizaba para inspeccionar las interfaces de red mediante WebRTC. No obstante, este método ya no brinda acceso a la dirección MAC en la mayoría de los navegadores modernos:
const pc = new RTCPeerConnection({iceServers:[]});
pc.createDataChannel("");
pc.createOffer().then((offer) => {
return pc.setLocalDescription(offer);
}).then(() => {
let lines = pc.localDescription.sdp.split('\n');
lines.forEach((line) => {
if (line.indexOf('candidate') !== -1) {
console.log("Candidate: ", line);
// En el pasado, aquí se podía obtener información extra,
// pero las MAC addresses están omitidas o enmascaradas.
}
});
}).catch((error) => {
console.error("Error:", error);
});
Como se ve, la idea era analizar la descripción de la conexión para encontrar detalles de las interfaces. Sin embargo, en la actualidad, las MAC están totalmente enmascaradas, y a menudo también las direcciones IP locales se limitan o sustituyen por direcciones ficticias.
Usos reales de la dirección MAC en desarrollo web
Aunque la dirección MAC no se exponga a JavaScript, existen alternativas de identificación en aplicaciones profesionales. Por ejemplo, en algunos sistemas de intranet, el administrador de red o el servidor backend tiene acceso a la MAC de los dispositivos conectados y puede correlacionar esos datos. Desde la perspectiva de una aplicación web estándar que se ejecuta en el navegador, se tiende a usar autenticación por usuario, cookies de sesión, tokens JWT, o fingerprinting de navegador (aunque esto último debe manejarse con precaución por temas de privacidad).
En estos casos, el usuario podría llevar un dispositivo específico que ha sido previamente registrado en la red. Si fuera esencial conocer la MAC, se haría mediante consultas al hardware o al sistema operativo, pero no a través de código JavaScript simple que se ejecute en el navegador.
Situaciones legítimas en las que se requiere la dirección MAC
Muchas organizaciones que administran redes empresariales o institucionales necesitan control de acceso basado en direcciones MAC. Por ejemplo, se restringe el Wi-Fi a una lista blanca de dispositivos conocidos. En estos entornos, la MAC se registra en el servidor o en el router, pero no se obtiene de la app web. El software del router, o un servicio interno de la empresa, obtiene esa información y la administra conforme a las políticas internas.
Ciertas aplicaciones IoT (Internet of Things) también requieren relacionar direcciones MAC con dispositivos para identificar y monitorear su actividad en la red. Sin embargo, suelen usarse protocolos específicos y no JavaScript en el navegador para este proceso.
¿Vale la pena buscar métodos alternativos?
Desde un punto de vista práctico, no es recomendable invertir esfuerzos en intentar obtener la MAC directamente con JavaScript. Si tu proyecto requiere la identificación de un dispositivo concreto, hay vías más confiables y menos problemáticas a nivel de seguridad:
- Identificación por usuario: Mediante inicio de sesión, cada usuario tiene sus credenciales y no importa la dirección MAC.
- Gestión por backend: El servidor, con permisos y acceso a la capa de red, puede obtener o manejar las MAC según sea necesario.
- Tokens temporales: Generar un token que identifique el dispositivo sin exponer su hardware. Esto puede almacenarse en cookies o localStorage.
Resumen de los retos técnicos
Para lograr obtener la dirección MAC de un dispositivo con JavaScript en un navegador moderno, es importante tomar en cuenta la siguiente lista de retos:
- Bloqueos de seguridad: Los navegadores impiden el acceso a datos sensibles como la MAC, por política de protección.
- Privacidad del usuario: Exponer la MAC permitiría rastrear dispositivos a lo largo de la web, algo que va contra las regulaciones.
- Dependencia de WebRTC: Aunque antiguamente se podía filtrar alguna información de la red, hoy día estas brechas han sido cerradas.
- Necesidad de entornos especiales: Solo en aplicaciones específicas (Node.js, Electron, etc.) o en servidores con acceso al hardware se puede leer la MAC de forma fiable.
Conclusión general
Para muchos desarrolladores, la pregunta de cómo obtener la dirección MAC utilizando JavaScript surge en el contexto de aplicaciones que requieren identificar a un dispositivo en la red de manera única. No obstante, los navegadores modernos se han encargado de reforzar sus medidas de seguridad y privacidad, imposibilitando el acceso directo a dicha información sensible.
La dirección MAC, si bien crucial para el intercambio de datos en la capa de enlace de red, se mantiene encapsulada para que páginas web corrientes no puedan recopilarla sin que el usuario lo sepa. De esta forma, se evitan todo tipo de vulnerabilidades relacionadas con la identificación y rastreo persistente de dispositivos.
La API WebRTC, que en otro tiempo facilitó ciertos escapes de privacidad, se ha actualizado para restringir datos delicados, incluyendo la dirección MAC. Por lo tanto, si tu aplicación requiere identificar un dispositivo, debes buscar métodos alternativos como la autenticación de usuarios, la generación de identificadores internos o la interacción con un servidor que, de manera interna, maneje dicha información si esto resulta indispensable para la plataforma.
En última instancia, obtener la dirección MAC con JavaScript en el navegador no es un procedimiento estándar ni recomendado. Por el contrario, es más común y seguro respetar los límites que imponen los navegadores y enfocarse en mecanismos de identificación adecuados para el desarrollo web moderno.
Preguntas frecuentes
¿Es posible obtener la dirección MAC de un dispositivo remotamente?
No, la dirección MAC se obtiene localmente en el dispositivo.