viernes, 11 de febrero de 2011

Crear una Cookie y que no desaparezca

Puede llegar a ser interesante conocer quie visita nuestra página sí o sí. Normalmente se usan las cookies del navegador, con opciones de sesión, dándoles fecha de fin... estas son fáciles de eliminar.
Si en algún caso se necesitaría poner una cookie que no desaparezca ni aun vación todas las opciones de configuración. Necesitaríamos aplicar evercookie.
El objetivo es crear una cookie prácticamente indestructible, y para ello se utiliza cosas como:
- Standard HTTP Cookies
- Local Shared Objects (Flash Cookies)
- Silverlight Isolated Storage
- Storing cookies in RGB values of auto-generated, force-cached 
- PNGs using HTML5 Canvas tag to read pixels (cookies) back out
- Storing cookies in Web History
- Storing cookies in HTTP ETags
- Storing cookies in Web cache
- window.name caching
- Internet Explorer userData storage
- HTML5 Session Storage
- HTML5 Local Storage
- HTML5 Global Storage
- HTML5 Database Storage via SQLite
Está escrito en JavaScript, y de momento el único navegador que es capaz de no cargar este sistema es Safari en modo privado. Podéis visitar la web oficial donde podréis descargaros la ultima versión.
Su uso es tan simple como esto:
<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] + "<br>");
}
ec.get("id", getCookie);
// we look for "candidates" based off the number of "cookies" that
// come back matching since it's possible for mismatching cookies.
// the best candidate is most likely the correct one
</script>