Taller de cadenas · Gratis

Analizador de user agent

Pega un user agent y obtén el navegador, el motor, el sistema operativo y el dispositivo, o lee el tuyo con un clic. Después lee la cadena token por token, porque casi todo lo que un navegador dice de sí mismo es falso desde 1994, y esta página te dice qué partes.

Analizado en tu navegador · No se sube nada
Informar de un problema

Espacio de trabajo del user agent

Chrome 131.0.0.0 en Windows 10 u 11, que renderiza con Blink 131.0.0.0. Tipo de dispositivo: Equipo de escritorio o portátil. 6 tokens leídos.

La cadena

Pega un user agent o lee el tuyo

Todo lo de abajo se recalcula con cada pulsación de tecla, en esta pestaña. La cadena nunca se envía a ningún sitio.

111 / 2,048 caracteres · 6 tokens

Ejemplo cargado: Chrome en Windows. La referencia. Cuatro de los cinco tokens son relleno histórico.

Qué está enviando esto
Chrome 131.0.0.0

Windows 10 u 11 · Blink 131.0.0.0 · Equipo de escritorio o portátil

4 aportan información4 son relleno histórico
Navegador
Chrome 131.0.0.0
Chrome/131.0.0.0
Motor
Blink 131.0.0.0
AppleWebKit/537.36
Sistema operativo
Windows 10 u 11
Windows NT 10.0
Tipo de dispositivo
Equipo de escritorio o portátil
Windows NT
Fabricante y modelo
No indicado
CPU
x86, 64 bits
Win64; x64
Token por token

Qué partes son información y cuáles son teatro

Los productos se separan con espacios; los detalles de plataforma van entre paréntesis y se separan con punto y coma. Cada pieza lleva una etiqueta con lo que dice en realidad.

  1. Mozilla/5.0Heredado

    Prefijo de compatibilidad con Netscape

    Todos los navegadores de uso general siguen empezando con esto y ninguno es Mozilla. Netscape se llamaba a sí mismo Mozilla en 1994; Internet Explorer copió el prefijo para que los servidores escritos para Netscape le sirvieran la página buena; todo lo posterior ha copiado a Internet Explorer. El 5.0 no se ha movido desde 1998.

  2. (Windows NT 10.0; Win64; x64)Comentario

    Bloque de comentario

    Detalles de plataforma. Todo lo que una cadena dice sobre el sistema operativo, la arquitectura y el dispositivo va entre paréntesis como estos, separado por punto y coma.

    • Windows NT 10.0Real

      Versión del kernel de Windows

      Windows 10 y Windows 11 envían el mismo NT 10.0. Nada en el user agent los distingue, y por eso Microsoft remite al platformVersion de los Client Hints.

    • Win64Real

      Arquitectura del proceso

      El número de bits de la compilación del navegador, no del equipo.

    • x64Real

      Arquitectura del proceso

      El número de bits de la compilación del navegador, no del equipo.

  3. AppleWebKit/537.36Heredado

    Compilación de WebKit congelada

    Chromium se bifurcó de WebKit en 2013 y desde entonces usa Blink. 537.36 es el número de compilación del momento de la bifurcación, conservado porque los sitios lo buscaban, y ninguna versión de Chrome en más de una década ha contenido ese código.

  4. (KHTML, like Gecko)Comentario

    Bloque de comentario

    Detalles de plataforma. Todo lo que una cadena dice sobre el sistema operativo, la arquitectura y el dispositivo va entre paréntesis como estos, separado por punto y coma.

    • KHTML, like GeckoHeredado

      Dos declaraciones, ambas falsas

      WebKit nació como bifurcación de KHTML, de KDE, así que la primera mitad era una nota de linaje que dejó de ser cierta hace veinte años. La segunda mitad se añadió para que los scripts que buscaban Gecko siguieran la ruta moderna. Chromium no es ninguna de las dos cosas y sigue enviando ambas.

  5. Chrome/131.0.0.0Real

    Versión de Chromium, reducida

    La versión principal es auténtica. Todo lo que va detrás lo puso a cero la reducción del UA: Chrome dejó de publicar sus números menor, de compilación y de parche para que la cadena no pudiera usarse como huella digital. Pide uaFullVersionList a los Client Hints si de verdad necesitas el resto.

  6. Safari/537.36Heredado

    Declaración de compatibilidad con Safari

    Chrome, Edge, Opera y todos los demás navegadores Chromium añaden esto para que la detección en el servidor escrita para Safari siga funcionando. El número coincide con la compilación congelada de AppleWebKit y no con ningún Safari que se haya publicado.

Lectura

Qué concluyeron las reglas y a partir de qué

Cada fila muestra la subcadena de la que se leyó. Lo que la cadena no indica se muestra como no indicado en lugar de rellenarse.

Navegador
Chrome/131.0.0.0
Chrome 131.0.0.0
Brave, Arc y la mayoría de los demás navegadores Chromium envían este token sin cambios y no añaden nada propio, a propósito. Por eso una lectura de Chrome significa Chrome o algo idéntico a él por diseño, y ningún analizador puede distinguirlos solo a partir de la cadena.
Motor de renderizado
AppleWebKit/537.36
Blink 131.0.0.0
Chromium se bifurcó de WebKit en 2013 y desde entonces el motor es Blink, así que el número de AppleWebKit es un fósil. 537.36 no se ha movido en más de una década y todos los navegadores Chromium envían exactamente ese.
Sistema operativo
Windows NT 10.0
Windows 10 u 11
Windows 10 y Windows 11 indican ambos NT 10.0. Nada en el user agent los distingue. Solo lo hace el platformVersion de los Client Hints, donde 13 o más significa Windows 11.
Dispositivo
Windows NT
Equipo de escritorio o portátil
Escritorio es la lectura predeterminada: no hay ningún marcador de teléfono, tableta, consola ni televisor. Ninguna cadena de escritorio indica fabricante ni modelo.
Fabricante
No indicado
Solo Android ha publicado alguna vez un fabricante, y solo a través de la cadena del modelo. Nada más lo hace.
Modelo
No indicado
Arquitectura de CPU
Win64; x64
x86, 64 bits
Conviene saberlo

Dónde miente, está congelada o es ambigua esta cadena

Todos los campos de arriba son autodeclarados

Un user agent es una cadena que el cliente eligió enviar. Cambiarla requiere un ajuste en las herramientas para desarrolladores, una opción en curl o una línea en cualquier biblioteca HTTP. Aquí no se verifica nada, no se autentica nada y nada de esto puede usarse para tomar una decisión de seguridad.

Brave, Arc y la mayoría de las bifurcaciones de Chromium no se pueden identificar aquí

Envían el token de Chrome sin cambios y no añaden nada propio. Brave lo hace a propósito, para reducir la superficie de huella digital. Mostrar una suposición sería peor que mostrar Chrome, así que esto dice Chrome.

Tu navegador

Lo que esta pestaña está enviando ahora mismo

Leído de navigator después de cargar la página. No se envía a ningún sitio y no está en el código fuente de la página.

Leer tu propio user agent requiere JavaScript, así que se completa un momento después de que cargue la página. Si sigue vacío, los scripts están bloqueados en esta pestaña.

navigator.userAgentData

Los User-Agent Client Hints son el reemplazo de la cadena de arriba: campos estructurados, pedidos por su nombre, con los sensibles detrás de una petición explícita. Los navegadores Chromium los implementan. Safari y Firefox se han negado.

Comprobando la compatibilidad.

Resultado copiable

El análisis en JSON

El formato que pegarías en un informe de error, con cada campo que las reglas completaron y null donde se negaron a adivinar.

{
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
  "browser": {
    "name": "Chrome",
    "version": "131.0.0.0"
  },
  "engine": {
    "name": "Blink",
    "version": "131.0.0.0"
  },
  "os": {
    "name": "Windows",
    "version": "10 u 11"
  },
  "device": {
    "type": "desktop",
    "vendor": null,
    "model": null
  },
  "cpu": {
    "architecture": "x86, 64 bits"
  },
  "agentKind": "browser",
  "bot": null,
  "tokens": [
    {
      "raw": "Mozilla/5.0",
      "kind": "product",
      "truth": "legacy",
      "label": "Prefijo de compatibilidad con Netscape"
    },
    {
      "raw": "(Windows NT 10.0; Win64; x64)",
      "kind": "comment",
      "truth": "real",
      "label": "Bloque de comentario"
    },
    {
      "raw": "AppleWebKit/537.36",
      "kind": "product",
      "truth": "legacy",
      "label": "Compilación de WebKit congelada"
    },
    {
      "raw": "(KHTML, like Gecko)",
      "kind": "comment",
      "truth": "legacy",
      "label": "Bloque de comentario"
    },
    {
      "raw": "Chrome/131.0.0.0",
      "kind": "product",
      "truth": "real",
      "label": "Versión de Chromium, reducida"
    },
    {
      "raw": "Safari/537.36",
      "kind": "product",
      "truth": "legacy",
      "label": "Declaración de compatibilidad con Safari"
    }
  ]
}
Biblioteca de ejemplos

Cadenas reales, cada una con una trampa distinta

Estas son las cadenas que rompen los analizadores ingenuos. Carga una y observa qué token decide la respuesta.

Navegadores de escritorio

Cinco cadenas casi idénticas y las pequeñas diferencias que deciden la respuesta.

Teléfonos y tabletas

Donde viven las trampas: motores de iOS, la reducción en Android y un iPad que dice Macintosh.

Ni siquiera un navegador

Rastreadores, una consola y el user agent honesto más corto que existe.

Nunca lo uses para seguridad

Un user agent es una cadena que el cliente eligió enviar, y se cambia con un ajuste en las herramientas para desarrolladores o una opción en curl. No puede autenticar nada, no puede restringir nada y no se puede confiar en que te diga que un dispositivo es lo que dice ser.

Tampoco lo uses para funciones

Pregunta al navegador si algo funciona en lugar de preguntarle cómo se llama. CSS.supports, la comprobación de una propiedad en el objeto y @supports responden a la pregunta real, y siguen respondiéndola correctamente en navegadores que no existían cuando se escribió el código.

El formato se está retirando

Chrome ya ha congelado la versión menor, la versión de macOS y el modelo de Android. Los Client Hints sustituyen la cadena por campos con nombre que tú solicitas. Todo lo que construyas sobre la cadena antigua se apoya en un número que se está apagando.

Cada lectura de esta página se genera en tu navegador con una tabla de reglas que viene con la página: no se sube ninguna cadena, no se llama a ningún servicio de consulta y no se guarda nada. El límite se declara en lugar de darse por supuesto: se leen hasta 2,048 caracteres, el resto se ignora y la página lo indica. Cuando un token no coincide con ninguna regla, se muestra como no reconocido y tal como llegó, porque un fabricante equivocado dicho con seguridad es peor que un hueco honesto.

Cómo funciona

Un formato que miente desde 1994, leído con el cuidado suficiente para que sirva de todos modos.

Un user agent es una pila de declaraciones de compatibilidad que han dejado treinta años de navegadores intentando recibir las mismas páginas que quien fuera ganando. Netscape se llamó a sí mismo Mozilla; Internet Explorer lo copió para conseguir frames; Safari añadió KHTML y like Gecko; Chrome añadió AppleWebKit y Safari para recibir las páginas pensadas para WebKit; Edge, Opera y Samsung Internet añadieron sus propios tokens encima de todos los de Chrome. Nunca se quitó nada, porque quitar cualquier cosa rompía algún servidor en alguna parte. Esta página lee la cadena con tablas de reglas ordenadas, de modo que la última declaración gana donde debe y la primera no: Edge no es Chrome, Opera no es Chrome, Chrome no es Safari, Chrome en iPhone es WebKit y Googlebot no es un teléfono Android. Después anota cada token, para que las dos o tres piezas que aportan información se vean junto a las diez que no. Todo es una tabla de reglas que viene con la página y se ejecuta en tu pestaña: sin dependencias, sin servicio de consulta y sin peticiones.

  1. 01

    Pega una cadena o lee la que envía esta pestaña

    Sirve cualquier user agent: uno copiado de un log del servidor, uno de un informe de error o el tuyo, que el botón lee de navigator cuando la página ya ha cargado. Tienes quince ejemplos reales a un clic, elegidos porque cada uno rompe un analizador escrito de memoria.

  2. 02

    Lee los tokens, no solo el veredicto

    El panel indica el navegador, el motor, el sistema operativo, el tipo de dispositivo, el fabricante, el modelo y la arquitectura. La lista de debajo recorre la cadena pieza por pieza y explica qué significa cada una, algo importante porque la mayor parte de un user agent moderno no significa nada en absoluto.

  3. 03

    Comprueba lo que la cadena se negó a decir antes de actuar

    Un campo marcado como no indicado es un campo que la cadena nunca contenía, y un token marcado como no reconocido es uno que ninguna regla de aquí reclama. Ambas cosas son respuestas. Donde los Client Hints pueden cubrir el hueco, el panel junto a tu propia cadena muestra lo que devuelven en este navegador.

Hecho para los casos que rompen analizadores

Orden, valores congelados y la negativa honesta a nombrar un fabricante que nunca se indicó.

Reglas ordenadas, porque el orden es todo el problema

Edge envía el token completo de Chrome y añade Edg al final. Opera añade OPR. Samsung Internet pone su token antes del de Chrome, no después. Chrome envía Safari. Cada tabla de reglas de aquí se lee de arriba abajo y gana la primera coincidencia, así que Edge es Edge, Opera es Opera y Chrome deja de aparecer como Safari.

Cada token anotado como información o como relleno

Esta es la parte que otros analizadores se saltan, y es la razón de que el formato resulte tan confuso. Mozilla/5.0 es una declaración de compatibilidad con Netscape de 1994. AppleWebKit/537.36 está congelado en el momento en que Chromium se bifurcó. KHTML, like Gecko son dos declaraciones, ambas falsas. Safari/537.36 en Chrome es una petición para que no le sirvan la página mala. Cada uno lleva su etiqueta donde aparece.

Las trampas resueltas por su nombre, no a ojo

Chrome en iPhone es CriOS y por debajo es WebKit. Firefox en iPhone es FxiOS y también es WebKit. Un iPad en su modo predeterminado se presenta como un Mac. La cadena de Googlebot para smartphones contiene un user agent completo de Chrome. Chrome en Android ahora indica Android 10 y un modelo K desde cualquier dispositivo del mundo. Todos se leen correctamente y se explican donde aparecen.

Aquí, no reconocido es una respuesta real

Brave y Arc envían el token de Chrome sin cambios y no añaden nada, a propósito, así que se muestran como Chrome con una nota en lugar de adivinar. Un token que no coincide con ninguna regla se muestra tal como llegó. Un fabricante inventado para rellenar una columna es peor que una columna vacía.

Tu propia cadena con los Client Hints al lado

Un botón lee navigator.userAgent y el panel de al lado lee navigator.userAgentData: marcas, móvil, plataforma y los valores de alta entropía que hay detrás. Ahí es donde están de verdad la versión real de Chrome, el modelo real de Android y la compilación de Windows que distingue 11 de 10.

Hecho en el propio repositorio, sin dependencias de análisis

Ni ua-parser-js ni servicio de consulta. El tokenizador es una sola pasada hacia delante sin ninguna expresión regular, las versiones se leen recorriendo caracteres desde un índice fijo y cada regla es una búsqueda literal de texto, así que ninguna entrada puede provocar backtracking. La entrada se limita a 2,048 caracteres y la página lo indica cuando recorta.

Preguntas sobre el user agent

Por qué todos los navegadores dicen Mozilla, qué significa Edg y por qué tu iPad dice ser un Mac.

¿Cuál es mi user agent?+

Es la línea que tu navegador pone en la cabecera User-Agent de cada petición que hace, para describirse ante el servidor. Pulsa el botón del espacio de trabajo de arriba y esta página la lee de navigator.userAgent y luego la descompone. No se sube nada para hacerlo; la lectura ocurre en la pestaña. Un user agent típico es Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36, y de esas seis piezas solo dos, el comentario de plataforma y la versión de Chrome, dicen algo cierto. El resto es sedimento de compatibilidad que ningún navegador se atreve a quitar.

¿Por qué todos los navegadores siguen diciendo Mozilla/5.0?+

Por una decisión de 1994 y treinta años en los que nadie ha podido deshacerla. El nombre en clave interno de Netscape era Mozilla, y enviaba Mozilla/2.0 como identidad. Los servidores empezaron a comprobarlo antes de servir frames, que Netscape admitía y la competencia no. Cuando Internet Explorer 2 incorporó frames no conseguía la página buena, así que envió Mozilla/2.0 (compatible; MSIE 2.0) y recibió la correcta. Desde entonces, cada navegador ha copiado a quien fuera ganando: Safari añadió Mozilla y KHTML, Chrome añadió Mozilla y Safari, Edge añadió Mozilla, Chrome y Safari. Hoy el prefijo solo significa que quien lo envía es un navegador web, y el 5.0 no se ha movido desde 1998. Quien lo quita se encuentra con algún servidor en alguna parte que le sirve una página de 1999.

¿Por qué Chrome dice ser Safari?+

Por la misma razón por la que Internet Explorer decía ser Netscape. Cuando Chrome se lanzó en 2008 usaba WebKit, el motor de Safari, y gran parte del código de detección en el servidor se había escrito como si WebKit significara Safari. Enviar los tokens AppleWebKit y Safari le daba a Chrome las mismas páginas que recibía Safari, así que los envió. En 2013 Chromium creó Blink como bifurcación de WebKit y siguió enviando ambos tokens de todos modos, porque para entonces quitarlos habría roto sitios. Así que AppleWebKit/537.36 es un número de compilación del momento de la bifurcación y ninguna versión de Chrome en más de una década ha contenido ese código, mientras que Safari/537.36 no corresponde a ningún Safari que haya existido nunca. La consecuencia práctica es que un analizador debe comprobar Chrome antes que Safari, o contará a cada usuario de Chrome como usuario de Safari.

¿Qué significa Edg y por qué no Edge?+

Edg es Microsoft Edge basado en Chromium, es decir, todos los Edge desde 2020. Se escribe con tres letras a propósito. El Edge antiguo enviaba Edge/18.19041, y mucho código de detección de funciones se había escrito para buscar la cadena Edge y tratarla como el navegador EdgeHTML, con sus propios fallos. Lanzar un navegador Chromium que coincidiera con esas comprobaciones le habría aplicado soluciones para EdgeHTML que no necesitaba, así que Microsoft eligió un token con el que nada coincidía todavía. Edge en Android es EdgA y Edge en iOS es EdgiOS, un hueco habitual en los analizadores escritos a mano. En los tres casos el token va después de un token completo de Chrome, así que un analizador que lee de izquierda a derecha y se detiene en el primer navegador que reconoce identifica Edge como Chrome.

¿Por qué mi iPad dice Macintosh?+

Porque Apple decidió en iPadOS 13 que un iPad debía recibir los sitios web de escritorio por defecto, y la forma de conseguirlo era enviar la cadena de escritorio. Safari en iPad envía ahora Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) sin ningún token iPad, idéntica byte a byte a la de Safari en un Mac. No hay forma de distinguir ambos a partir de la cadena, y es intencionado. Si necesitas saberlo, la pista está en la página y no en la cabecera: navigator.maxTouchPoints devuelve un número mayor que cero en un iPad que dice ser un Mac, y cero en casi todos los Mac reales. El token iPad solo reaparece cuando el usuario ha elegido Solicitar sitio web móvil para ese sitio.

¿Puedo fiarme de lo que dice un user agent?+

No, y no es una advertencia: es la propiedad que define el formato. La cadena la elige el cliente. Cambiarla requiere un campo en el panel de condiciones de red de las herramientas para desarrolladores de cualquier navegador, una opción -A en curl o una línea en cualquier biblioteca HTTP. Nada la firma, nada la verifica y nada en la cabecera viaja con ninguna garantía. Sirve para analítica, donde una pequeña proporción de datos absurdos no cambia la forma de los datos, y para elegir un enlace de descarga, donde lo peor que puede pasar es el instalador equivocado. Nunca es aceptable como control de acceso, comprobación de licencia, defensa contra bots ni ninguna otra decisión de seguridad. Si necesitas saber que una petición es de verdad de Googlebot, Google publica rangos de DNS inverso y una lista JSON de sus direcciones precisamente por eso, y verificar contra ellos es la única forma honesta de tratar esa afirmación.

¿Qué son los User-Agent Client Hints?+

Son el reemplazo de todo el formato. En lugar de una sola cadena que lo lleva todo, lo quiera el sitio o no, el navegador envía tres campos de baja entropía en cada petición (la lista de marcas, si es móvil y el nombre de la plataforma) y se guarda todo lo demás hasta que un sitio lo pide por su nombre mediante la cabecera de respuesta Accept-CH o mediante navigator.userAgentData.getHighEntropyValues en JavaScript. Los valores de alta entropía son los útiles: la versión completa del navegador, la versión de la plataforma, la arquitectura, el número de bits y el modelo del dispositivo. Hay dos detalles que conviene saber. La lista de marcas incluye a propósito una marca inventada cuyo nombre cambia en cada versión, para que el código tenga que analizar la lista correctamente en lugar de buscar un único nombre fijo, que es justo el error que hizo imposible arreglar la cadena antigua. Y el soporte no es universal: los navegadores Chromium lo implementan, mientras que Safari y Firefox se han negado, y por eso la cadena antigua sigue siendo lo que envían todos los navegadores.

¿Qué es la reducción del user agent y qué ha eliminado ya?+

Es el programa por fases de Google, prácticamente completado desde Chrome 110 en 2023, para congelar las partes de la cadena que la convertían en una superficie de rastreo por huella digital. Chrome indica ahora sus números menor, de compilación y de parche como 0.0.0, así que la versión completa se lee 131.0.0.0 y solo el número principal es real. En escritorio, la versión de la plataforma está fijada en un valor constante. En Android, todos los dispositivos indican Android 10 y un modelo K, sea cual sea en realidad. Apple llegó antes y por otro camino: macOS indica 10.15.7 desde Big Sur porque mucho código de detección comparaba la versión numéricamente y fallaba con 11, y la palabra Intel se sigue enviando en Apple Silicon. El efecto es que la cadena es ahora una señal mucho más débil de lo que suele suponer el código que la lee, y cualquier cosa que necesite los valores reales tiene que pedirlos mediante los Client Hints.

¿Cómo cambio o falsifico mi user agent?+

En Chrome y Edge, abre las herramientas para desarrolladores, usa el menú de tres puntos para mostrar Más herramientas y luego Condiciones de red, desmarca Usar el valor predeterminado del navegador y elige o escribe una cadena. Firefox expone general.useragent.override en about:config. Safari tiene un menú Desarrollo con un submenú Agente de usuario. En la línea de comandos es curl -A en curl y --user-agent en wget, y cada biblioteca HTTP tiene una opción equivalente de una línea. Los usos legítimos son reales: probar que tu propio sitio sirve lo correcto a un navegador antiguo, reproducir un fallo que solo ve un cliente concreto y comprobar qué recibe un rastreador. Lo importante es lo inverso. Si cambiarlo es así de fácil para ti, es igual de fácil para todos los demás, así que ninguna comprobación que escribas en el servidor puede suponer que la cadena es honesta. Falsificarlo para saltarse un muro de pago o un límite de peticiones es un problema de términos de servicio más que técnico, y además suele fallar, porque los sistemas serios dejaron de fiarse de la cabecera hace años.

Chrome en mi iPhone aparece como CriOS. ¿Es Chrome de verdad?+

Es de verdad la interfaz de Chrome, su sincronización y su barra de direcciones, pero no es el motor de Chrome. Apple exige que todos los navegadores de iOS y iPadOS rendericen con el WebKit del sistema, así que Chrome para iOS, Firefox para iOS, Edge para iOS y Opera para iOS son todos Safari por debajo con distintas capas encima. Los tokens son CriOS, FxiOS, EdgiOS y OPiOS respectivamente, y cada uno va en una cadena que también lleva AppleWebKit y un número de compilación de Safari, que en este caso son auténticos y no decorativos. La consecuencia práctica para las pruebas es lo útil: un fallo de renderizado detectado en Chrome en un iPhone es un fallo de WebKit, se reproducirá en Safari en el mismo dispositivo y no se reproducirá en Chrome en ninguna otra plataforma. La Ley de Mercados Digitales de la Unión Europea ha empezado a flexibilizar esto, pero fuera de ese contexto la regla sigue vigente.

Más herramientas especializadas, listas cuando las necesites.

Explora una colección cada vez más amplia para cálculos, documentos, escritura y el trabajo diario.

Ver todas las herramientas