evercookie, la cookie que nunca desaparece

·

Una de las cosas que en algunos proyectos pueden ser interesantes es saber quién visita la página sí o sí. Normalmente usamos las cookies del navegador, con las opciones de que sean de sesión, de darles una fecha final más o menos cercana o lejana y, por supuesto, la opción de eliminarlas simplemente pulsando un par de botones en las opciones de nuestro navegador.

Pero seguro que en alguna ocasión has necesitado poner una cookie que no desaparezca ni aunque se vacíen todas las opciones de configuración. Si esto es lo que quieres, tu respuesta tiene nombre: evercookie.

El objetivo del proyecto evercookie es conseguir crear una cookie que sea prácticamente indestructible, y para ello utiliza algunas cosas como:

  • Standard HTTP Cookies
  • Local Shared Objects (Flash Cookies)
  • Storing cookies in RGB values of auto-generated, force-cached
  • PNGs using HTML5 Canvas tag to read pixels (cookies) back out
  • Storing cookies in and reading out Web History
  • Storing cookies in HTTP ETags
  • Internet Explorer userData storage
  • HTML5 Session Storage
  • HTML5 Local Storage
  • HTML5 Global Storage
  • HTML5 Database Storage via SQLite

evercookie está escrito en JavaScript, aunque usa elementos de SWF (para guardar en Flash) o PHP u otras herramientas que tenga disponible el sistema con tal de guardar esa información para que se vuelva indestructible. En principio, el único navegador que es capaz de no cargar este sistema es Safari en modo privado…

En algunos casos, esta cookie puede ser instalada desde un único navegador, pero utilizada desde algún otro, ya que hay algunos sistemas compartidos, sobre todo a la hora de guardar información general en la máquina.

Para descargarlo puedes visitar la página GitHub de evercookie o descargar la versión 0.3. Su uso es tan sencillo como:

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="swfobject-2.2.min.js"></script>
<script type="text/javascript" src="evercookie.js"></script>
<script>
  var ec = new evercookie();
  // set a cookie "id" to "12345"
  // usage: ec.set(key, value)
  ec.set("id", "12345");
  // retrieve a cookie called "id" (simply)
  ec.get("id", function(value) { alert("Cookie value is " + value) });
  // or use a more advanced callback function for getting our cookie
  // the cookie value is the first param
  // an object containing the different storage methods
  // and returned cookie values is the second parameter
  function getCookie(best_candidate, all_candidates) {
    alert("The retrieved cookie is: " + best_candidate + "\n" +
    "You can see what each storage mechanism returned " +
    "by looping through the all_candidates object.");
    for (var item in all_candidates)
      document.write("Storage mechanism " + item + " returned: " + all_candidates[item] + "
");
  }
  ec.get("id", getCookie);
</script>

En fin… no sé si algún día llegaré a utilizarlo en alguno de mis proyectos, pero la verdad es que parece muy interesante para determinadas cosas… ya que la información y funcionalidad es impresionante.

Comments

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *