¿Por qué los navegadores envían cadenas de agente de usuario tan detalladas?

8

Los navegadores web modernos filtran una cantidad ridícula de información a través del encabezado User-Agent . El siguiente es un ejemplo de Safari en iPad, de Wikipedia :

Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us)
AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405

Está claro que la información proporcionada aquí va mucho más allá de lo que tiene sentido para los propósitos de la orientación del navegador / SO por servicios web legítimos. De hecho, lo único que parece hacer este nivel de detalle es facilitar el rastreo y las huellas digitales del navegador, y, como es de esperar, se usa para eso de forma extensiva.

¿Por qué los proveedores de navegadores permiten / admiten esto? ¿Por qué no es algo como

Mozilla/5.0 (Safari 5.1; iOS/iPad; en-us)

suficiente? Incluso en-us no debería ser necesario, ya que está duplicado por el encabezado Accept-Language , y si el servidor tiene derecho a saber qué dispositivo estoy usando también es discutible, dejándonos con

Mozilla/5.0 (Safari 5.1; iOS)

que aún captura la versión del navegador y del sistema operativo y, por lo tanto, debe ser completamente suficiente para todos los fines legítimos.

    
pregunta user114974 20.06.2016 - 10:17
fuente

2 respuestas

8

Las cadenas de agente de usuario son extremadamente complicadas por razones históricas. Es una larga historia, pero la versión corta es que todos querían parecerse a alguien más para evitar los servidores que restringen el acceso a páginas web basadas en navegadores. Sí, eso solía ser una cosa en los días. Y ahora estamos atrapados con este triste lío.

La buena noticia es que esto significa que a pesar de que la cadena del agente de usuario es larga, gran parte de ella no es realmente información útil. Si eliminamos la placa de la caldera, la información sobre usted que podemos obtener de esta cadena es:

  • iPad : estás en un iPad.
  • CPU OS 3_2_1 like Mac OS X : está utilizando iOS con una versión específica.
  • en-us : tienes tu idioma configurado en inglés americano.
  • AppleWebKit/531.21.10 : está utilizando el motor WebKit, con esa versión en particular.
  • Mobile/7B405 : su versión de firmware.
  • Estás utilizando Safari. Nunca lo dice explícitamente, pero se puede deducir de la estructura de la cadena.

Esa es una gran cantidad de información que podría ser útil para la toma de huellas dactilares. Yo diría que esto sigue siendo una buena práctica:

  • Toda esta información también podría ser útil para determinar qué versión de un sitio se debe servir. Por ejemplo, si hay un error conocido en una determinada versión de WebKit, es posible que desee incluir algunos CSS con una solución alternativa. Hay usos legítimos para esto.
  • Si mantiene su software actualizado, su agente de usuario difícilmente será único de todos modos.
  • Hay demasiadas formas en las que las huellas dactilares de un navegador no tienen por qué eliminar información útil para evitarlo. Solo mire Panopticlick o evercookie .

Mi punto principal es que pedir a los proveedores del navegador que eliminen la funcionalidad no resolverá el problema subyacente. Si desea seguir siendo imposible de rastrear, necesita usar un navegador diseñado específicamente para eso. Implica perder una gran cantidad de funcionalidades legítimas (por ejemplo, la capacidad de volver a personalizar la ventana del navegador).

Si solo le preocupa el encabezado de agente de usuario, hay complementos que lo cambiarán o incluso lo aleatorizarán por usted. Pero si está preocupado por ser rastreado en la web, probablemente debería preocuparse por mucho más que eso.

    
respondido por el Anders 20.06.2016 - 11:31
fuente
0

Primero, es importante comprender que la idea de los agentes de usuario nunca fue diseñada para la huella digital. Pero para obtener información sobre el navegador, la plataforma, el motor de representación y otra información del dispositivo para ayudar a los desarrolladores.

Los agentes de usuario se agregaron por primera vez al estándar HTTP en 1996 . En ese momento los estándares del navegador eran generalmente el salvaje oeste. Muy raramente dos navegadores se reproducían completamente iguales. A veces el mismo navegador funcionaría completamente diferente por plataforma. E incluso dos versiones diferentes del mismo navegador funcionarían completamente diferente. Como resultado, era normal tener varias versiones de la misma página que se adaptaron a un navegador o rango de navegadores en particular. Y el agente de usuario fue la única forma de obtener estos detalles en qué página se debe servir.

Hoy en día, el agente de usuario-husmeo para la adaptación del contenido no se recomienda para el desarrollo moderno. En su lugar, un desarrollador debe detectar y adaptar utilizando la detección de características . Sin embargo, aunque esta es una forma mejor y más preferida, no espere que se elimine de los navegadores pronto. Debido a su amplio uso sería un cambio de última hora. Y también hay algo llamado indetectables . Lo que significa que la característica no puede ser detectada y el agente de usuario podría ser la última medida para detectar su utilidad o proporcionar un medio alternativo. O existe un error conocido de un navegador / renderizador particular y desea detectar su posibilidad a través del agente de usuario.

Además, el navegador, por razones de seguridad, suele evitar que los sitios web accedan a información detallada de la máquina. El agente de usuario es uno de los pocos lugares donde un navegador puede ofrecerse como voluntario y entregar esta información que de otra manera no se puede obtener. Entonces, a menudo es descriptivo porque no hay medios alternativos para tirarlo. Mientras que el toque, el tamaño de la pantalla, etc. se pueden hacer mediante la detección de características, lo que hace que no sea necesario incluirlas.

La idea general y el uso de las cadenas de agente de usuario utilizadas para la impresión digital son un efecto secundario de su disponibilidad. Pero nunca fue el propósito ni la especificación para esta función.

    
respondido por el Bacon Brad 21.06.2016 - 22:39
fuente

Lea otras preguntas en las etiquetas