Analizador de user agent

Ve tu propio user agent o analiza cualquiera: navegador, sistema operativo, dispositivo y motor.

User agent: cuál es mi user agent y qué dice de tu navegador, sistema y dispositivo

Al abrir la página, el cuadro ya contiene tu propio user agent, el texto que tu navegador envía con cada petición, y debajo aparece lo que dice: nombre y versión del navegador, motor de renderizado, sistema operativo, tipo, marca y modelo de dispositivo y arquitectura de CPU. Pega cualquier otro user agent, sacado de un log del servidor, de una exportación de analítica o de un reporte de error, y se analiza igual. El análisis lo hace en tu navegador la librería de código abierto ua-parser-js; nada se envía a un servidor.

Qué es el user agent

El user agent es la cabecera HTTP User-Agent con la que el cliente se identifica. Su formato arrastra una historia de los años noventa: todos los navegadores empezaron a declararse Mozilla para recibir las mismas páginas que Netscape, y por eso casi cualquier user agent actual empieza por Mozilla/5.0, aunque no tenga nada que ver con Firefox.

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36

"browser": { "name": "Chrome", "version": "140.0.0.0", "major": "140" }
"cpu":     { "architecture": "amd64" }
"device":  {}
"engine":  { "name": "Blink", "version": "140.0.0.0" }
"os":      { "name": "Windows", "version": "10" }

El resultado se muestra como JSON con los campos browser, engine, os, device y cpu. En un ordenador de escritorio el objeto device suele quedar vacío: el tipo solo se rellena cuando el texto indica móvil, tableta, televisor u otro dispositivo.

Chrome, Safari y la trampa de Safari/537.36

El user agent de Chrome contiene Safari/537.36, y el de Edge contiene además Chrome. El parser reconoce el navegador real por el orden de sus comprobaciones: antes de concluir que es Safari busca tokens más específicos, como Edg para Edge o Chrome para Chrome. Por eso detectar el navegador a mano con includes('Safari') falla tan a menudo.

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Mobile Safari/537.36
  → Mobile Chrome 140, Android 10, device: mobile, modelo "K"

Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Mobile/15E148 Safari/604.1
  → Mobile Safari 18.6, iOS 18.6, device: mobile, Apple iPhone

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0
  → Edge 140, Windows 10

En el user agent de iPhone, la versión de iOS va con guiones bajos (18_6) y el parser la convierte en 18.6. El Safari/537.36 que tanto se busca no indica ningún Safari: es un token de compatibilidad que Chrome, Edge y Opera envían sin cambiarlo en cada versión.

Por qué la versión o el sistema parecen incorrectos

Los navegadores envían hoy menos información que antes. Desde 2022, Chrome y los navegadores basados en Chromium reducen el user agent: la versión menor siempre es 0.0.0, en Android el modelo se sustituye por K y la versión del sistema queda congelada en Android 10. Todos los Mac se anuncian como Mac OS X 10_15_7, sea cual sea su versión de macOS, y Windows 11 envía Windows NT 10.0, igual que Windows 10.

Así que si ves Windows 10 o macOS 10.15.7 con un navegador moderno, no es un error del parser: el dato no está en el texto. Los navegadores Chromium exponen más detalle mediante User-Agent Client Hints, las cabeceras Sec-CH-UA y navigator.userAgentData.getHighEntropyValues(), que sí distinguen Windows 11. Firefox y Safari no implementan client hints. Además, Safari en iPad se presenta por defecto como un Mac.

Analizar user agents de logs y bots

En los logs del servidor aparecen visitantes reales y clientes automáticos. Pegar un user agent sirve para saber si un pico de errores viene de un WebView de Android antiguo, de una versión concreta de un navegador o de un script. Los clientes que no son navegadores se reconocen a simple vista:

curl/8.9.1
python-requests/2.32.3
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

El parser no clasifica estos textos como navegadores, así que los campos quedan vacíos; el nombre del bot está en el propio texto. Ten en cuenta que el cliente elige su user agent y puede escribir lo que quiera. Cualquiera puede enviar Googlebot, y Google recomienda verificar su rastreador con una búsqueda DNS inversa de la IP, no por el user agent.

Consultar y cambiar el user agent

navigator.userAgent                        // JavaScript en el navegador
$_SERVER['HTTP_USER_AGENT']                // PHP
request.headers.get('user-agent')          // Node.js / Fetch API
curl -A 'MiBot/1.0 (+https://example.com)' https://example.com

Para ver cómo responde un sitio a otro dispositivo, abre las DevTools de Chrome, ve a More tools > Network conditions, desmarca Use browser default y elige o escribe otro user agent. La barra de dispositivos también cambia el user agent junto con el tamaño de pantalla. Si programas un rastreador o un cliente de API, envía un user agent honesto con nombre, versión y una URL de contacto.

Detecta funciones, no navegadores

Decidir qué puede hacer una página según el user agent se rompe en cuanto un navegador cambia su texto, y excluye navegadores que no probaste. Comprueba la función directamente, con 'share' in navigator o CSS.supports('display', 'grid'), y usa media queries para el diseño. El user agent sigue siendo útil para analítica, para diagnosticar reportes de errores y para limitar clientes automáticos concretos.

El user agent es además una de las señales del fingerprinting del navegador, junto con el tamaño de pantalla, las fuentes y la zona horaria; es uno de los motivos por los que se redujo.

Frequently asked questions

¿Cuál es mi user agent?

Tu user agent aparece en el cuadro superior en cuanto se carga la página, junto con el navegador, el sistema operativo y el dispositivo que describe. Puedes copiarlo desde ahí.

¿Qué es el user agent?

Es el texto que el navegador o cualquier cliente HTTP envía en la cabecera User-Agent para identificarse. Indica, con más o menos precisión, el navegador, su versión, el motor y el sistema operativo.

¿Por qué todos los user agents empiezan por Mozilla/5.0?

Por compatibilidad histórica: los navegadores copiaron el prefijo de Netscape para no recibir versiones peores de las páginas. Hoy no significa nada y lo envían Chrome, Safari, Edge y Firefox.

¿Por qué mi PC con Windows 11 aparece como Windows 10?

Los navegadores envían Windows NT 10.0 tanto en Windows 10 como en Windows 11, así que el user agent no permite distinguirlos. Solo los navegadores Chromium revelan la versión real mediante User-Agent Client Hints.

¿Por qué la versión de Chrome termina en .0.0.0?

Chrome redujo su user agent para limitar el fingerprinting. Solo la versión principal es real; el resto está fijo, igual que el modelo en Android y la versión de macOS.

¿Esta página guarda mi user agent?

No: lo lee tu propio navegador para mostrártelo y no lo envía a ninguna parte. Otra cosa son los sitios que visitas, que reciben tu user agent con cada petición y normalmente lo guardan en sus logs de acceso.