En informática , un agente de usuario es cualquier software, que actúa en nombre de un usuario , que "recupera, representa y facilita la interacción del usuario final con el contenido web". [1] Un agente de usuario es, por tanto, un tipo especial de agente de software .
Algunos ejemplos destacados de agentes de usuario son los navegadores web y los lectores de correo electrónico . A menudo, un agente de usuario actúa como cliente en un sistema cliente-servidor . En algunos contextos, como en el Protocolo de inicio de sesión (SIP), el término agente de usuario se refiere a ambos puntos finales de una sesión de comunicaciones. [2]
Identificación de agente de usuario
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 , proveedor de software o revisión de software, enviando una cadena de identificación característica a su par operativo. En los protocolos HTTP , [3] SIP, [2] y NNTP [4] , esta identificación se transmite en un campo de encabezado Usuario-Agente . 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 webmaster pueda comunicarse con el operador del bot.
Usar en HTTP
En HTTP, la cadena Usuario-Agente se usa a menudo para la negociación de contenido , donde el servidor de origen selecciona el contenido adecuado o los parámetros operativos para la respuesta. Por ejemplo, un servidor web puede utilizar la cadena Usuario-Agente para elegir variantes en función de las capacidades conocidas de una versión particular del software del cliente. El concepto de adaptación de contenido está integrado en el estándar HTTP en RFC 1945 "con el fin de adaptar las respuestas para evitar limitaciones particulares de los agentes de usuario".
La cadena Usuario-Agente es uno de los criterios por los cuales los rastreadores web pueden ser excluidos del acceso a ciertas partes de un sitio web utilizando el Estándar de exclusión de robots ( archivo robots.txt ).
Como ocurre con muchos otros encabezados de solicitud HTTP, la información de la cadena "User-Agent" contribuye a la información que el cliente envía al servidor, ya que la cadena puede variar considerablemente de un usuario a otro. [5]
Formato para navegadores web operados por humanos
El formato de cadena de usuario-agente se especifica actualmente en la sección 5.5.3 de HTTP / 1.1 Semántica y contenido . El formato de la cadena User-Agent 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 de 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 diseño 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 identificaron como alguna versión de Mozilla únicamente. [6] Se consideró que otros navegadores eran productos más antiguos, como Mosaic , Cello o Samba , y se les enviaría un documento HTML básico.
Por este motivo, la mayoría de los navegadores web utilizan un valor de cadena de agente de usuario de la siguiente manera:
Mozilla / [versión] ([información del sistema y del navegador]) [plataforma] ([detalles de la plataforma]) [extensiones] . 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 utilizado 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 ejecuta el navegador.
- AppleWebKit / 531.21.10 : la plataforma que utiliza el navegador.
- (KHTML, como Gecko) : detalles de la plataforma del navegador.
- Móvil / 7B405 : el navegador lo utiliza para indicar mejoras específicas que están disponibles directamente en el navegador oa través de terceros. Un ejemplo de esto es Microsoft Live Meeting, que registra una extensión para que el servicio Live Meeting sepa si el software ya está instalado, lo que significa que puede proporcionar una experiencia optimizada para unirse a las 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 User-Agent con "Mozilla" (en su lugar, comenzaba con "Opera"). Desde el 15 de julio de 2013, [7] la cadena User-Agent 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, usa la cadena "OPR" para denotar la Opera versión).
Formato para agentes automatizados (bots)
Las herramientas de rastreo web automatizadas pueden utilizar 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. [8] Por ejemplo:
Googlebot / 2.1 (+ http: //www.google.com/bot.html)
Se espera que los agentes automatizados sigan las reglas en un archivo especial llamado " robots.txt ".
Suplantación de agentes de usuario
La popularidad de varios productos de navegador web ha variado a lo largo de la historia de la Web, y esto ha influido en el diseño de los sitios web de tal manera que los sitios web a veces están diseñados para funcionar bien solo con navegadores particulares, en lugar de de acuerdo con los estándares uniformes de la World Wide Web. Consorcio (W3C) o el Grupo de trabajo de ingeniería de Internet (IETF). Los sitios web a menudo incluyen código para detectar la versión del navegador para ajustar el diseño de la página enviada de acuerdo con la cadena de agente de usuario recibida. Esto puede significar que a los navegadores menos populares no se les envía contenido complejo (aunque puedan tratarlo correctamente) o, en casos extremos, se rechaza todo el contenido. [9] Por lo tanto, varios navegadores tienen una función para ocultar o falsificar su identificación para forzar cierto contenido del lado del servidor. Por ejemplo, el navegador de Android se identifica a sí mismo como Safari (entre otras cosas) para ayudar a la compatibilidad. [10] [11]
Otros programas de cliente HTTP, como administradores de descargas y navegadores fuera de línea , a menudo tienen la capacidad de cambiar la cadena del agente de usuario.
Spam bots and Web scrapers often use fake user agents.
A result of user agent spoofing may be that collected statistics of Web browser usage are inaccurate.
User agent sniffing
User agent sniffing is the practice of websites showing different or adjusted content when viewed with certain user agents. An example of this is Microsoft Exchange Server 2003's Outlook Web Access feature. When viewed with Internet Explorer 6 or newer, more functionality is displayed compared to the same page in any other browsers. User agent sniffing is considered poor practice, since it encourages browser-specific design and penalizes new browsers with unrecognized user agent identifications. Instead, the W3C recommends creating standard HTML markup,[12] allowing correct rendering in as many browsers as possible, and to test for specific browser features rather than particular browser versions or brands.[13]
Websites intended for display by mobile phones often rely on user agent sniffing, since mobile browsers often differ greatly from each other.
Encryption strength notations
Web browsers created in the United States, such as Netscape Navigator and Internet Explorer, previously used the letters U, I, and N to specify the encryption strength in the user agent string. Until 1996, when the United States government disallowed encryption with keys longer than 40 bits to be exported, vendors shipped various browser versions with different encryption strengths. "U" stands for "USA" (for the version with 128-bit encryption), "I" stands for "International" – the browser has 40-bit encryption and can be used anywhere in the world – and "N" stands (de facto) for "None" (no encryption).[14] Following the lifting of export restrictions, most vendors supported 256-bit encryption.
Deprecation of User-Agent header
In 2020, Google announced that they would be phasing out support for the User-Agent header in their Google Chrome browser. They stated that other major web browser vendors were supportive of the move, but that they did not know when other vendors would follow suit.[15] Google stated that a new feature called Client Hints would replace the functionality of the User-Agent string.[16]
Ver también
- Robots exclusion standard
- Web crawler
- Wireless Universal Resource File (WURFL)
- User Agent Profile (UAProf)
- Browser sniffing
- Web browser engine
Referencias
- ^ "W3C Definition of User Agent". www.w3.org. 16 June 2011. Retrieved 2018-10-20.
- ^ a b RFC 3261, SIP: Session Initiation Protocol, IETF, The Internet Society (2002)
- ^ RFC 7231, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, IETF, The Internet Society (June 2014)
- ^ Netnews Article Format. IETF. November 2009. sec. 3.2.13. doi:10.17487/RFC5536. RFC 5536.
- ^ Peter Eckersley. "Browser Versions Carry 10.5 Bits of Identifying Information on Average", Electronic Frontier Foundation, 27 January 2010. Retrieved 25 August 2011.
- ^ History of the browser user-agent string. WebAIM.
- ^ "Opera User Agent Strings: Opera 15 and Beyond". dev.opera.com. 15 July 2013. Retrieved 2014-05-05.
- ^ "https://www.rankwatch.com/blog/handle-bot-herding-and-spider-wrangling-for-rankings/"
- ^ Burstein complaining "... I've been rejected until I come back with Netscape"
- ^ "Android Browser Reports Itself as Apple Safari". Archived from the original on August 6, 2011. Retrieved August 9, 2011.
- ^ "User Agent String explained: Android Webkit Browser". UserAgentString.com. Retrieved 29 July 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. "W3C Markup Validation Service". W3C. Retrieved 2011-10-18.
- ^ Clary, Bob (10 February 2003). "Browser Detection and Cross Browser Support". Mozilla Developer Center. Mozilla. Retrieved 2009-05-30.
- ^ Zawinski, Jamie (28 March 1998). "user-agent strings (obsolete)". mozilla.org. Retrieved 2010-01-08.
- ^ "Chrome Phasing out Support for User Agent". InfoQ. Retrieved 2020-03-25.
- ^ Cimpanu, Catalin. "Google to phase out user-agent strings in Chrome". ZDNet. Retrieved 2020-03-25.