Analizador de User-Agent: qué le cuenta tu navegador a cada sitio
Se ejecuta en nuestro servidor: el valor que envías se procesa y no se almacena.
La carta de presentación de cada navegador son treinta años de fósiles de compatibilidad apilados unos sobre otros — por eso Chrome dice ser Safari, y por eso analizar una a mano sale mal. Esto lee la tuya correctamente.
Eso es un bot declarado: ClaudeBot
AI Data Scraper, gestionado por Anthropic PBC. Una cadena como esta anuncia lo que es en vez de hacerse pasar por un navegador, y por eso recibe las reglas de robots.txt en lugar de un CAPTCHA.
Se analiza en nuestro servidor con las reglas de Matomo device-detector. La cadena se lee y el resultado se muestra; no se guarda nada.
Por qué las cadenas de user-agent son así
Tu navegador se presenta con una línea como esta:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Leída al pie de la letra, dice ser Mozilla, y también AppleWebKit, y también KHTML, y también Chrome, y también Safari. No tiene sentido, y no lo tiene por una razón: cada uno de esos tokens se añadió para que los servidores que detectaban a un competidor sirvieran la versión buena de la página. Netscape se llamaba a sí mismo Mozilla. Internet Explorer se llamaba Mozilla para que le sirvieran las páginas de Netscape. Safari decía ser KHTML porque era un fork de KHTML. Chrome decía ser Safari. Edge dice ser Chrome. Treinta años de eso es lo que ha llegado a ser la cadena: un fósil de compatibilidad que nadie puede quitar porque todavía hay demasiado código de servidor que lo lee.
Por eso analizar una a mano sale mal. La expresión regular obvia para Chrome coincide con Edge, Opera, Brave, Vivaldi y la mayoría de los navegadores integrados en aplicaciones de Android. La expresión regular obvia para Safari coincide con todos los navegadores Chromium que existen. Acertar requiere un conjunto de reglas mantenido con miles de entradas y un orden conocido, y eso es lo que usa esta página.
Qué hace este analizador
Lee la cadena en nuestro servidor con el conjunto de reglas de Matomo device-detector —el mismo motor que hay detrás de una gran parte de las analíticas web autoalojadas— y divide la respuesta en el cliente, el sistema operativo y el dispositivo. Empieza con la cadena de tu propio navegador, porque la que puedes comprobar con la realidad es la forma más rápida de aprender a leer la siguiente.
Pega cualquier cadena para analizarla en su lugar. Hay tres resultados que merece la pena saber leer:
- Un navegador reconocido. El nombre, la versión, el motor, la plataforma y, en móvil, la marca y el modelo.
- Un bot declarado. Googlebot y sus parientes dicen lo que son en vez de hacerse pasar por Chrome. Esa honestidad es la razón por la que reciben reglas de robots.txt en lugar de un CAPTCHA.
- Nada reconocido. Esto es un resultado, no un fallo. Ningún navegador en circulación envía esa cadena, y un sitio que compruebe cadenas de user-agent llegará a la misma conclusión y la bloqueará. Si has montado la cadena a mano para un scraper, acabas de encontrar tu problema.
Un guion junto a un campo significa que la cadena no lleva esa información. Eso es cada vez más normal: Chrome ha estado reduciendo deliberadamente lo que revela su user-agent, trasladando el detalle a Client Hints, que son cabeceras aparte. Un analizador no puede inventar lo que la cadena no dice, y uno que rellena los huecos con conjeturas plausibles es peor que uno que los admite.
La cadena, token por token
Merece la pena leer una entera de principio a fin una vez, porque después cualquier otra cadena de esta familia se vuelve obvia. Tomando el ejemplo de Chrome de arriba:
- Mozilla/5.0 — no significa nada. Todos los navegadores lo envían. Está ahí porque los servidores de los años 1990 lo comprobaban antes de servir una página con frames.
- (Windows NT 10.0; Win64; x64) — el bloque de plataforma. Windows NT 10.0 abarca tanto Windows 10 como Windows 11: Microsoft no cambió el token, así que ningún user-agent puede distinguirlos.
- AppleWebKit/537.36 (KHTML, like Gecko) — congelado. Chromium se separó de WebKit en 2013 y la versión no se ha movido desde entonces. Es un fósil, y una cadena que lo «actualice» es una cadena que ningún navegador envía.
- Chrome/131.0.0.0 — la información de verdad. Fíjate en los ceros: Chrome dejó de informar de su versión menor, así que solo el número mayor significa algo.
- Safari/537.36 — otro fósil, que coincide con la versión de WebKit de arriba.
Firefox es el legible por comparación — Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0 —, donde rv: y el token de Firefox coinciden y Gecko/20100101 es una fecha fija que no significa nada desde 2010. Edge añade Edg/131.0.0.0 a una cadena de Chrome que por lo demás está completa, y por eso leerlo como Chrome es el error de análisis habitual.
Dónde importa esto si usas proxies
El user-agent es lo más barato que comprueba un sitio y lo más barato de estropear. Cuatro errores explican la mayoría de los bloqueos:
- Una versión que ya no existe. Hay scrapers a los que se les pega un user-agent una vez y luego funcionan dos años. Chrome publica una versión mayor cada cuatro semanas, así que una cadena que era actual cuando se escribió es, a estas alturas, una versión que nadie ejecuta. Eso es una señal más nítida que no enviar ningún user-agent.
- Un user-agent que contradice todo lo demás. Decir Safari en macOS mientras tu navegador envía los client hints de Chromium, el orden de cabeceras de Chrome y un conjunto de fuentes de Windows. Cualquiera de esas cosas se comprueba más a menudo que la propia cadena.
- Un user-agent de móvil desde una conexión de escritorio. Una cadena de iPhone que llega por una dirección de centro de datos, con una pantalla de 2560×1440 y sin soporte táctil. La contradicción es trivial de detectar y es lo bastante concreta como para ser deliberada.
- La misma cadena en todo un pool. Doscientas direcciones enviando un user-agent idéntico byte a byte es un patrón, y es el tipo de patrón más fácil de bloquear, porque una sola regla los atrapa a todos.
Si necesitas cadenas actuales en lugar de un análisis, el generador de user-agents las construye a partir de la versión de tu propio navegador, lo que evita que se queden obsoletas. Y la cadena es solo uno de los valores que lee un sitio: el lector de huellas muestra el resto, que es donde están la mayoría de las contradicciones.
Preguntas que recibimos sobre Analizador de User-Agent
¿Por qué mi user-agent de Chrome menciona Safari y Mozilla?
Es historia de la compatibilidad. Cada token se añadió para que los servidores que buscaban a un competidor sirvieran la versión buena de la página: IE decía Mozilla, Safari decía KHTML, Chrome decía Safari y Edge dice Chrome. Nadie puede quitarlos porque aún hay demasiado código de servidor que los lee.
¿Mi user-agent se envía a algún sitio?
Se lee en nuestro servidor para analizarla, y eso es todo: no se anota nada. Tu navegador ya envía su user-agent con cada petición a cualquier sitio, incluido este, así que aquí no hay nada que no nos haya contado ya.
¿Qué significa un guion en un campo?
Que la cadena no lo dice. Chrome revela deliberadamente menos que antes y ha trasladado ese detalle a los Client Hints, que son cabeceras aparte y no forman parte de la cadena que has pegado. Un analizador que rellenara esos huecos con suposiciones sería peor que uno que los admite.
El analizador no ha reconocido mi cadena. ¿Está roto?
Ese es el resultado, no un fallo. Ningún navegador en circulación envía una cadena que no se reconozca, y un sitio que compruebe user-agents la tratará exactamente igual. Si has construido la cadena a mano para un scraper, este es el problema que venías a encontrar.
¿Qué precisión tiene la detección de dispositivo?
Buena para todo lo mayoritario y más floja en la larga cola de dispositivos Android, y eso es inherente: el modelo solo se puede identificar si el fabricante lo puso en la cadena y el conjunto de reglas conoce ese modelo. Los navegadores de escritorio no identifican la máquina en absoluto, por diseño.
¿Debería cambiar mi user-agent para que no me bloqueen?
Solo por uno actual y coherente con todo lo demás que envías. Una versión obsoleta, o una cadena móvil desde una conexión de escritorio, es una señal más fuerte que la que habría dado el valor por defecto. Cambiarlo por sí solo suele hacerte más llamativo, no menos.