Validando el Navegador desde NodeJS
Supongamos que tenemos un sitio web extremadamente coqueto con lo último en tecnología HTML5, CSS3 y toda la locura. Pero entra un usuario con Internet Explorer 6 y le explota en la cara, se rompe todo, la mayoría de la magia que nos llevo mucho trabajo hacer ni siquiera la visualiza.
Bueno, si, IE6?, podría decir IE8 o hasta Mozilla 4, etc. El punto es, si usamos lo nuevo no estamos soportando los navegadores anteriores, y que hacemos?, tenemos varias opciones:
- degradamos el sitio para que funcione de la mejor forma posible con navegadores viejitos
- le mostramos un mensaje: “Actualizate esa cosa con la que navegas”
- le avisamos que no va a funcionar bien
- todas las anteriores
- etc…
En todos los casos, primero tenemos que enterarnos de que está navegando con algo que no soportamos del todo.
Una forma es inspeccionar en el Encabezado (header) HTTP, la propiedad User-Agent. En esa propiedad de la petición enviada por el navegador vamos a ver todo el detalle de quién es.
Por ejemplo, un posible encabezado para Internet Explorer 9:
Mozilla/5.0 ?, si, por razones históricas Internet Explorer se identifica como un navegador Mozilla, que loco no?
Bueno, ahí tenemos mucha data, hasta el Sistema Operativo y tiene un patrón, una forma exacta de parseo, que es cada cosa, etc. pero no vamos a reinventar la rueda …
Leyendo el UserAgent con NodeJS
Tenemos varios paquetes NPM para leer el UserAgent, en este caso les voy a mostrar useragent de 3rd-Eden, elegí este porque me pareció el mas simple de usar.
Supongamos que tenemos un servidor en NodeJS con Express y bajo un pedido de una página queremos validar el navegador:
Se pueden hacer muchas cosas mas con esa biblioteca, pueden ver más sobre la api en useragent de 3rd-Eden.