Detectando el navegador utilizado sin hacer uso del UserAgent
Me entero gracias a chema alonso, sobre una nueva técnica utilizada para detectar el navegador de un visitante llamada Web Browsing Fingerprinting, esta técnica se se basa en la respuesta brindada por el navegador ante una petición especifica, como la respuesta a dicha petición varían según el navegador y su versión esto permite identificarlo sin hacer uso de su "UserAgent".
El UserAgent es el nombre que identifica cada navegador y que envía cuando realiza una petición a un sitio web, pero este puede ser cambiado fácilmente (de forma manual o utilizando plugins como el User Agent Switcher para firefox) haciéndose pasar por otro navegador/bot/etc....
Por ejemplo, si encontramos un sitio web diseñado solo para iPhone, que permite ser visitado solo desde este dispositivo haciendo la validación por medio de su "UserAgent", bastaría con cambiar el identificador en nuestro navegador por "Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20" (UserAgent de un iPhone 3G) y podríamos entrar a este sitio "solo para iPhone" sin tener uno.
La cosa es distinta si en el portal se implementa el Web Browsing Fingerprinting ya que se ignora el valor enviado por el UserAgent y se intenta identificar el navegador por la respuesta que da a una petición especifica, WBfingerprinting es un sencillo código javascript que nos muestra el funcionamiento de esta técnica, pueden ver una prueba de concepto corriendo en los servidores de informatica64.
De momento solo son detectados los principales navegadores, pero su código fuente esta disponible para que puedas adaptarlo a tus necesidades.
Mas Información:
Web Browsing Fingerprinting
Javascript Web Browser Fingerprinting
Código Fuente
Un buen listado de UserAgent's lo encuentran en zytrax