En informática , el encabezado User-Agent es un encabezado HTTP destinado a identificar al agente de usuario responsable de realizar una solicitud HTTP determinada. Mientras que la secuencia de caracteres User-Agentconforma el nombre del encabezado, el valor del encabezado que un agente de usuario utiliza para identificarse se conoce coloquialmente como su cadena de agente de usuario . El agente de usuario del operador de un ordenador utilizado para acceder a la web tiene codificado en las reglas que rigen su comportamiento el conocimiento de cómo negociar su parte de una transacción de solicitud-respuesta; por lo tanto, el agente de usuario desempeña el papel de cliente en un sistema cliente-servidor . A menudo se considera útil en redes la capacidad de identificar y distinguir el software que facilita una sesión de red. Por esta razón, el encabezado HTTP User-Agent existe para identificar el software cliente ante el servidor que responde.
Uso en solicitudes de clientes
Cuando un agente de software opera en un protocolo de red, a menudo se identifica a sí mismo, su tipo de aplicación, sistema operativo , modelo de dispositivo, proveedor de software o revisión de software, enviando una cadena de identificación característica a su par operativo. En los protocolos HTTP, [ 1 ] SIP, [ 2 ] y NNTP [ 3 ] , esta identificación se transmite en un campo de encabezado User-Agent . Los bots , como los rastreadores web, a menudo también incluyen una URL y/o una dirección de correo electrónico para que el administrador web pueda contactar al operador del bot.
En HTTP, la cadena de agente de usuario se utiliza a menudo para la negociación de contenido , donde el servidor de origen selecciona el contenido o los parámetros operativos adecuados para la respuesta. Por ejemplo, un servidor web podría usar la cadena de agente de usuario para elegir variantes en función de las capacidades conocidas de una versión específica del software del cliente. El concepto de adaptación de contenido está integrado en el estándar HTTP en el RFC 1945 "con el fin de adaptar las respuestas para evitar limitaciones específicas del agente de usuario".
La cadena de agente de usuario es uno de los criterios mediante los cuales se puede excluir a los rastreadores web del acceso a ciertas partes de un sitio web utilizando el Estándar de Exclusión de Robots ( archivo robots.txt ).
Al igual que con muchos otros encabezados de solicitud HTTP, la información en la cadena del agente de usuario contribuye a la información que el cliente envía al servidor, ya que la cadena puede variar considerablemente de un usuario a otro. [ 4 ]
Formato para navegadores web operados por humanos
El formato de la cadena del agente de usuario se especifica actualmente en la sección 10.1.5 de la RFC 9110, Semántica HTTP . [ 5 ] El formato de la cadena del agente de usuario en HTTP es una lista de tokens de producto (palabras clave) con comentarios opcionales. Por ejemplo, si el producto de un usuario se llamara WikiBrowser, su cadena de agente de usuario podría ser WikiBrowser/1.0 Gecko/1.0 . El componente del producto "más importante" se enumera primero.
Las partes de esta cadena son las siguientes:
- Nombre y versión del producto ( WikiBrowser/1.0 )
- Motor de maquetación y versión ( Gecko/1.0 )
Durante la primera guerra de navegadores , muchos servidores web se configuraron para enviar páginas web que requerían funciones avanzadas, incluidos marcos , a clientes que se identificaban como alguna versión de Mozilla únicamente. [ 6 ] Otros navegadores se consideraban productos más antiguos, como Mosaic , Cello o Samba , y se les enviaba un documento HTML básico.
Por este motivo, la mayoría de los navegadores web utilizan un valor de cadena de agente de usuario como el siguiente:
Por ejemplo, Safari en el iPad ha utilizado lo siguiente:
Mozilla/5.0 (iPad; U; CPU OS 3_2_1 como Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, como Gecko) Mobile/7B405
Los componentes de esta cadena son los siguientes:
- Mozilla/5.0 : Anteriormente se utilizaba para indicar compatibilidad con el motor de renderizado de Mozilla.
- (iPad; U; CPU OS 3_2_1 como Mac OS X; en-us) : Detalles del sistema en el que se está ejecutando el navegador.
- AppleWebKit/531.21.10 : La plataforma que utiliza el navegador.
- (KHTML, como Gecko) : Detalles de la plataforma del navegador.
- Mobile/7B405 : El navegador utiliza este código para indicar mejoras específicas disponibles directamente en el navegador o a través de terceros. Un ejemplo es Microsoft Live Meeting, que registra una extensión para que el servicio Live Meeting sepa si el software ya está instalado, lo que permite ofrecer una experiencia más fluida al unirse a reuniones.
Antes de migrar a la base de código de Chromium , Opera era el navegador web más utilizado que no tenía la cadena de agente de usuario con "Mozilla" (en su lugar, comenzaba con "Opera"). Desde el 15 de julio de 2013, [ 7 ] la cadena de agente de usuario de Opera comienza con "Mozilla/5.0" y, para evitar encontrarse con reglas de servidor heredadas, ya no incluye la palabra "Opera" (en su lugar, utiliza la cadena "OPR" para denotar la versión de Opera).
Formato para agentes automatizados (bots)
Las herramientas automatizadas de rastreo web pueden usar un formulario simplificado, donde un campo importante es la información de contacto en caso de problemas. Por convención, la palabra "bot" se incluye en el nombre del agente. Por ejemplo:
Googlebot/2.1 (+http://www.google.com/bot.html)Se espera que los agentes automatizados sigan las reglas de un archivo especial llamado " robots.txt ".
Notaciones de seguridad del cifrado
Los navegadores web creados en Estados Unidos, como Netscape Navigator e Internet Explorer , utilizaban anteriormente las letras U, I y N para especificar la intensidad del cifrado en la cadena del agente de usuario. Hasta 1996, cuando el gobierno estadounidense permitió la exportación de cifrado con claves de más de 40 bits, los proveedores distribuían diversas versiones de navegadores con diferentes niveles de cifrado. «U» significa «USA» (para la versión con cifrado de 128 bits), «I» significa «Internacional» ( el navegador tiene cifrado de 40 bits y puede utilizarse en cualquier parte del mundo ) y «N» significa ( de facto ) «Ninguno» (sin cifrado). [ 8 ] Tras el levantamiento de las restricciones a la exportación , la mayoría de los proveedores admitían el cifrado de 256 bits.
Suplantación de agente de usuario
La popularidad de los distintos navegadores web ha variado a lo largo de la historia de la web, lo que ha influido en el diseño de los sitios web de tal forma que, en ocasiones, estos se diseñan para funcionar correctamente solo con navegadores específicos, en lugar de seguir estándares uniformes establecidos por el Consorcio World Wide Web (W3C) o el Grupo de Trabajo de Ingeniería de Internet (IETF). Los sitios web suelen incluir código para detectar la versión del navegador y ajustar el diseño de la página según la cadena del agente de usuario recibida. Esto puede significar que a los navegadores menos populares no se les envíe contenido complejo (aunque podrían procesarlo correctamente) o, en casos extremos, que se les rechace todo el contenido. [ 9 ] Por lo tanto, varios navegadores tienen una función para ocultar o falsificar su identificación y así forzar la entrega de cierto contenido del servidor. Por ejemplo, el navegador de Android se identifica como Safari (entre otros) para mejorar la compatibilidad. [ 10 ] [ 11 ]
Otros programas cliente HTTP, como los gestores de descargas y los navegadores sin conexión , suelen tener la capacidad de cambiar la cadena del agente de usuario.
Una consecuencia de la suplantación de identidad del agente de usuario puede ser que las estadísticas recopiladas sobre el uso del navegador web sean inexactas.
Detección del agente de usuario
El análisis del agente de usuario consiste en que los sitios web muestren contenido diferente o modificado al visualizarse con determinados agentes de usuario. Un ejemplo de esto es la función Outlook Web Access de Microsoft Exchange Server 2003. Al visualizarse con Internet Explorer 6 o posterior, se muestra más funcionalidad que en cualquier otro navegador. El análisis del agente de usuario se considera una mala práctica, ya que fomenta el diseño específico para cada navegador y penaliza a los navegadores nuevos con identificaciones de agente de usuario no reconocidas. En su lugar, el W3C recomienda crear un marcado HTML estándar, [ 12 ] que permita una representación correcta en tantos navegadores como sea posible, y realizar pruebas para características específicas del navegador en lugar de versiones o marcas particulares. [ 13 ]
Los sitios web diseñados para visualizarse en teléfonos móviles suelen basarse en la detección del agente de usuario, ya que los navegadores móviles suelen diferir mucho entre sí.
Desuso del encabezado User-Agent
En 2020, Google anunció que congelaría partes del encabezado User-Agent en su navegador Chrome , ya que ya no se utilizaba para determinar las capacidades del navegador, sino principalmente para la identificación pasiva del navegador . [ 14 ] Google declaró que una nueva función llamada Client Hints reemplazaría la funcionalidad de la cadena del agente de usuario. [ 15 ]
A partir de Chrome 113, lanzado en abril de 2023, el encabezado User-Agent se congeló parcialmente. El agente de usuario en las versiones más recientes de Chrome permanecería estático, excepto por los dígitos que representaban la versión principal del navegador que se estaba utilizando. [ 16 ]
Identificación errónea del navegador
A partir de Firefox 110, lanzado en febrero de 2023, [ 17 ] Mozilla anunció que congelaría temporalmente partes de la cadena del agente de usuario del navegador en la versión 109. Esto se hizo debido a que varios sitios web reconocían incorrectamente una versión de desarrollo del navegador (que se identificaba mediante la cadena ) [ 18 ] como el obsoleto Internet Explorer 11 (que informa ). [ 19 ] Esta suplantación de versión se detuvo para Firefox 120 en adelante, ya que solo se observó que los navegadores que se identificaban como 110 a 119 se veían afectados por el problema. [ 20 ]Mozilla/5.0 (Windows NT 10.0; Win64; rv:110.0) Gecko/20100101 Firefox/110.0Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
Véase también
Referencias
- ↑ "RFC-9110: Semántica HTTP" . IETF . Consultado el 28 de julio de 2022 .
- ↑ RFC 3261, SIP: Protocolo de inicio de sesión , IETF, The Internet Society (2002)
- ↑ Formato del artículo de Netnews . IETF . Noviembre de 2009. sec. 3.2.13. doi : 10.17487/RFC5536 . RFC 5536 .
- ↑ Eckersley, Peter (27 de enero de 2010). "Las versiones de navegador contienen, en promedio, 10,5 bits de información de identificación" . Electronic Frontier Foundation . Consultado el 25 de agosto de 2011 .
- ↑ R. Fielding ; M. Nottingham; J. Reschke, eds. (junio de 2022). HTTP Semantics . Internet Engineering Task Force . doi : 10.17487/RFC9110 . ISSN 2070-1721 . STD 97. RFC 9110 . Estándar de Internet 97. sec. Semántica HTTP. Deja obsoletos los RFC 2818 , 7230 , 7231 , 7232 , 7233 , 7235 , 7538 , 7615 y 7694. Actualiza el RFC 3864 .
- ↑ Historial de la cadena de agente de usuario del navegador . WebAIM.
- ↑ "Cadenas de agente de usuario de Opera: Opera 15 y más allá" . dev.opera.com. 15 de julio de 2013. Consultado el 5 de mayo de 2014 .
- ↑ Zawinski, Jamie (28 de marzo de 1998). "cadenas de agente de usuario (obsoleto)" . mozilla.org . Consultado el 8 de enero de 2010 .
- ↑ Burstein se queja: "... Me han rechazado hasta que vuelva con Netscape".
- ↑ "El navegador de Android se hace pasar por Apple Safari" . Archivado del original el 6 de agosto de 2011. Consultado el 9 de agosto de 2011 .
- ↑ "Explicación de la cadena de agente de usuario: navegador Android Webkit" . UserAgentString.com. Archivado del original el 4 de mayo de 2012. Recuperado el 29 de julio de 2012.
Mozilla/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
- ↑ Pemberton, Stephen. "Servicio de validación de marcado del W3C" . W3C . Consultado el 18 de octubre de 2011 .
- ↑ Clary, Bob (10 de febrero de 2003). "Detección de navegador y compatibilidad entre navegadores" . Centro para desarrolladores de Mozilla . Mozilla . Archivado del original el 17 de noviembre de 2011. Consultado el 30 de mayo de 2009 .
- ↑ "Chrome deja de ofrecer soporte para User Agent" . InfoQ . Consultado el 25 de marzo de 2020 .
- ↑ Cimpanu, Catalin. "Google eliminará gradualmente las cadenas de agente de usuario en Chrome" . ZDNet . Consultado el 25 de marzo de 2020 .
- ↑ "Reducción de agente de usuario" . www.chromium.org . Consultado el 13 de julio de 2023 .
- ↑ "Notas de la versión de Firefox" . mozilla.org . Consultado el 8 de abril de 2023 .
- ↑ "www.bestbuy.com - Firefox es un navegador no compatible" . github.com . Consultado el 8 de abril de 2023 .
- ↑ Schubert, Dennis. "Congelar el segmento 'rv:' en la cadena del agente de usuario a 'rv:109.0' para evitar la detección errónea de IE11" . bugzilla.mozilla.org . Consultado el 8 de abril de 2023 .
- ↑ Peterson, Chris. "Eliminar la solución alternativa para el agente de usuario de IE11 'rv:109.0' congelado después de que Firefox alcance la versión 120 (escritorio y Android)" . bugzilla.mozilla.org . Consultado el 8 de abril de 2023 .
- Clientes (informática)
- Encabezados del Protocolo de Transferencia de Hipertexto