Analizador de User-Agent
Analiza cadenas de user agent en sus componentes
User-Agent String
Enter a User-Agent string to parse
El User-Agent Parser extrae el nombre del navegador, versión, motor de renderizado, sistema operativo y tipo de dispositivo a partir de cadenas de encabezado User-Agent, decodificando el formato notoriamente enrevesado que ha acumulado décadas de tokens de compatibilidad. Pega una cadena como Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 y obtén un desglose claro: Chrome 120.0, motor Blink, Windows 10, Desktop.
Entendiendo las cadenas User-Agent
El encabezado User-Agent es una de las partes más antiguas y malentendidas de HTTP. Fue diseñado originalmente como un identificador simple -- una forma para que un navegador le dijera al servidor su nombre y versión para que el servidor pudiera adaptar su respuesta. Netscape Navigator enviaba Mozilla/1.0, y eso era todo. Pero décadas de guerras de navegadores, hacks de compatibilidad y detección de funcionalidades han convertido la cadena User-Agent en una maraña de tokens históricos que te dicen mucho más sobre la historia de los navegadores web que sobre el cliente real que hace la solicitud.
El problema comenzó cuando Internet Explorer quería recibir el mismo contenido que los servidores estaban enviando a Netscape Navigator. Así que IE afirmó ser "Mozilla compatible". Luego Firefox apareció como el verdadero sucesor de Mozilla y usó el mismo prefijo. Safari agregó "like Gecko" para que los servidores que verificaban Gecko le sirvieran contenido moderno. Chrome copió la cadena completa de Safari y agregó su propio token. Edge copió la cadena de Chrome y agregó otro token más. El resultado es que el User-Agent de Chrome hoy contiene "Mozilla", "AppleWebKit", "KHTML", "Gecko", "Chrome" y "Safari" -- y no es ninguna de esas cosas excepto Chrome.
Para desarrolladores y administradores de sistemas, el análisis de User-Agent sigue siendo necesario a pesar de sus peculiaridades. El análisis de logs de acceso requiere saber qué navegadores y sistemas operativos usan tus usuarios. La detección de bots depende de identificar crawlers como Googlebot y Bingbot. Los reportes de bugs específicos de navegador necesitan la versión exacta para reproducir el problema. Y el análisis de tráfico requiere distinguir usuarios móviles de usuarios de escritorio. Este parser corta el ruido histórico y extrae la información que realmente importa: qué navegador, qué versión, qué SO y qué tipo de dispositivo.
Cómo analizar una cadena User-Agent
- Pega una cadena User-Agent en el campo de entrada (desde logs de acceso, DevTools del navegador o encabezados HTTP).
- Haz clic en Parse para extraer todos los componentes identificables.
- Revisa los resultados analizados: familia de navegador, versión, motor, SO, tipo de dispositivo y detección de bots.
Ejemplos de análisis de User-Agent
| Cadena User-Agent | Navegador | Versión | Motor | SO | Dispositivo |
|---|---|---|---|---|---|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 | Chrome | 120.0 | Blink | Windows 10 | Desktop |
Mozilla/5.0 (Macintosh; Intel Mac OS X 14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15 | Safari | 17.2 | WebKit | macOS 14.2 | Desktop |
Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0 | Firefox | 121.0 | Gecko | Linux | Desktop |
Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1 | Safari Mobile | 17.2 | WebKit | iOS 17.2 | Mobile |
Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.43 Mobile Safari/537.36 | Chrome Mobile | 120.0 | Blink | Android 14 | Mobile |
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) | Googlebot | 2.1 | -- | -- | Bot |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.91 | Edge | 120.0 | Blink | Windows 10 | Desktop |
Cuándo usar el User-Agent Parser
- Analizar logs de acceso del servidor -- Analiza cadenas User-Agent de logs de servidores web para entender la distribución de tu tráfico por navegador, SO y tipo de dispositivo.
- Identificar tráfico de bots -- Detecta crawlers conocidos (Googlebot, Bingbot, Baiduspider) y distínguelos del tráfico humano en las analíticas.
- Depurar problemas específicos del navegador -- Extrae la versión exacta del navegador y motor de renderizado de un reporte de bug para reproducir el problema.
- Probar lógica de detección de navegador -- Valida que tu código de detección de navegador del lado del servidor o del cliente identifique correctamente varios patrones de User-Agent.
- Entender patrones de tráfico -- Determina la proporción de móvil vs. escritorio y qué versiones de SO usan tus usuarios para informar las prioridades de testing.
- Análisis de logs de seguridad -- Identifica cadenas User-Agent sospechosas en logs de acceso que puedan indicar ataques automatizados o scraping.
Por qué las cadenas User-Agent son tan confusas
La historia del spoofing de navegadores
Todos los navegadores modernos comienzan su User-Agent con Mozilla/5.0 debido a una cadena de hacks de compatibilidad históricos:
- Netscape Navigator (el Mozilla original) fue el primer navegador en introducir el encabezado
User-Agenty usóMozilla/version. - Internet Explorer afirmó ser
Mozilla/4.0 (compatible; MSIE...)para que los servidores que verificaban "Mozilla" le enviaran el mismo contenido enriquecido. - Firefox usó
Mozilla/5.0... Gecko/...como sucesor de Netscape. - Safari agregó
(KHTML, like Gecko)para que los servidores que buscaban "Gecko" enviaran contenido moderno. - Chrome copió el token de Safari y agregó el propio, resultando en una cadena que afirma ser Mozilla, como KHTML, como Gecko, Chrome y Safari simultáneamente.
- Edge (basado en Chromium) agregó
Edg/a la ya larga cadena de Chrome.
Qué significa realmente cada token
En un User-Agent típico de Chrome:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Mozilla/5.0-- Token de compatibilidad histórica (sin significado hoy)Windows NT 10.0; Win64; x64-- Sistema operativo y arquitecturaAppleWebKit/537.36-- Versión del motor de renderizado (valor congelado en Chromium)KHTML, like Gecko-- Declaración de compatibilidadChrome/120.0.0.0-- El navegador y versión realesSafari/537.36-- Otro token de compatibilidad (Chrome no es Safari)
Client Hints: la alternativa moderna
Los User-Agent Client Hints (encabezados Sec-CH-UA-*) son el reemplazo moderno, proporcionando datos estructurados y de baja entropía:
Sec-CH-UA: "Chromium";v="120", "Google Chrome";v="120"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
El parser reconoce tanto cadenas User-Agent tradicionales como valores modernos de Client Hints.
Mapeo de versiones de Windows
Las versiones de Windows en cadenas User-Agent usan números de versión NT internos que no coinciden con los nombres comerciales:
| Valor en User-Agent | Versión de Windows |
|---|---|
Windows NT 10.0 | Windows 10 o Windows 11 |
Windows NT 6.3 | Windows 8.1 |
Windows NT 6.2 | Windows 8 |
Windows NT 6.1 | Windows 7 |
Windows NT 6.0 | Windows Vista |
Windows NT 5.1 | Windows XP |
Ten en cuenta que Windows 10 y Windows 11 comparten el mismo valor Windows NT 10.0. Distinguirlos requiere User-Agent Client Hints (Sec-CH-UA-Platform-Version).
Consejos prácticos para el análisis de User-Agent
Al analizar logs de acceso, no intentes analizar cadenas User-Agent con expresiones regulares. El formato es demasiado irregular y tiene demasiadas variaciones para manejarlo de forma confiable con regex. Usa una biblioteca de análisis dedicada como ua-parser-js (JavaScript), user-agents (Python) o browscap (PHP). Estas bibliotecas mantienen bases de datos de patrones conocidos y se actualizan a medida que se lanzan nuevos navegadores y versiones.
Para la detección de bots, recuerda que los bots legítimos típicamente se identifican claramente en sus cadenas User-Agent, pero los bots maliciosos casi siempre falsifican cadenas de navegadores reales. Si ves un User-Agent que afirma ser Chrome 120 en Windows 10 pero la solicitud proviene de una dirección IP de data center, hace 100 solicitudes por segundo e ignora robots.txt, es casi seguramente un bot independientemente de lo que diga el User-Agent. La detección efectiva de bots combina el análisis de User-Agent con señales de comportamiento como la tasa de solicitudes, la reputación de IP y las capacidades de ejecución de JavaScript.
La tendencia en el ecosistema de navegadores es reducir la información en las cadenas User-Agent. Chrome ha estado congelando gradualmente partes de su User-Agent (la versión de WebKit está congelada en 537.36, la versión menor de Chrome siempre es .0.0.0) y empujando a los desarrolladores hacia Client Hints para información detallada. Si estás construyendo nuevos sistemas que necesitan información del navegador o SO, considera soportar Client Hints desde el inicio en lugar de depender únicamente del análisis tradicional de User-Agent, ya que la cantidad de información útil en la cadena User-Agent solo disminuirá con el tiempo.
Preguntas frecuentes
¿Cómo puedo diferenciar entre Chrome y Edge?
Edge basado en Chromium incluye un token Edg/ (nota: no "Edge") al final de su cadena User-Agent. Ambos comparten los mismos tokens Chrome/ y Safari/. Busca específicamente Edg/ para distinguir Edge de Chrome.
¿Es confiable detectar el tipo de dispositivo desde el User-Agent?
Para categorías amplias (móvil vs. escritorio), la detección por User-Agent es razonablemente confiable. La presencia de Mobile en la cadena indica un dispositivo móvil. Sin embargo, la detección de tablets es menos consistente, y algunos navegadores móviles en "modo escritorio" envían cadenas User-Agent de estilo escritorio. Para una detección más confiable, combina el análisis de User-Agent con técnicas de diseño responsive.
¿Cómo detecto bots y crawlers?
Los bots legítimos típicamente se identifican claramente: Googlebot, bingbot, Baiduspider, YandexBot, DuckDuckBot. El parser mantiene una lista de identificadores de bots conocidos. Sin embargo, los bots maliciosos frecuentemente falsifican cadenas User-Agent de navegadores reales, por lo que el User-Agent solo no es suficiente para la detección de bots crítica para la seguridad.
¿Por qué Chrome reporta "Safari" en su User-Agent?
Chrome incluye Safari/537.36 por compatibilidad histórica. Cuando Chrome se lanzó por primera vez, muchos sitios web verificaban "Safari" para servir contenido compatible con WebKit. Chrome heredó WebKit (luego lo bifurcó en Blink) y mantuvo el token de Safari para evitar recibir contenido degradado. Es puramente un artefacto de compatibilidad y no significa que Chrome esté relacionado con Safari.
¿Qué es la iniciativa de "User-Agent reducido"?
A partir de Chrome 110, Google ha estado reduciendo gradualmente la información en la cadena User-Agent de Chrome como parte de la iniciativa Privacy Sandbox. El objetivo es minimizar el fingerprinting pasivo congelando o eliminando números de versión granulares, detalles del SO e información del modelo del dispositivo. Se anima a los desarrolladores que necesitan esta información a usar User-Agent Client Hints en su lugar, que requieren un opt-in explícito del servidor y preservan más la privacidad.
¿Puedo confiar en la versión del SO en una cadena User-Agent?
Generalmente sí para identificar la familia del SO (Windows, macOS, Linux, iOS, Android), pero la versión específica puede estar congelada o ser inexacta. Chrome en Windows reporta Windows NT 10.0 tanto para Windows 10 como Windows 11. Chrome en macOS puede congelar la versión en un valor específico. Para la detección precisa de la versión del SO, usa Client Hints o métodos de detección del lado del servidor.
Herramientas relacionadas
- HTTP Header Formatter - Analiza y formatea encabezados de solicitud HTTP incluyendo User-Agent
- Cookie Header Parser - Analiza cookies enviadas junto con el User-Agent en solicitudes
- curl Command Builder - Construye comandos curl con encabezados User-Agent personalizados para testing
- HTTP Status Code Lookup - Busca códigos de estado devueltos a diferentes User-Agents
- CORS Header Explainer - Entiende el comportamiento CORS en diferentes navegadores