Facebook Beacon
Mucho se ha dicho sobre la nueva iniciativa de anuncios en línea de Facebook “Beacon” y como los usuarios sienten (sentimos diría yo) que la forma en que fue implementado viola nuestros derechos de la privacidad. Aunque no soy experto en Javascript en este post quiero ver a Beacon desde un punto de vista más técnico. Para saber un poco más en general de beacon puedes checar:
General
Privacidad
Un demo de cómo funciona
Inicialmente tenía la teoría de que Facebook y su “advertiser partner” usaban javascript, cookies y cookies de tercera-persona (third party). Y aunque no tenía la solución de cómo interactuaba el código resulta que estaba en lo correcto. En este post pueden encontrar los pedazos de código y en detalle cómo funcionan e interactúan. Sin embargo a menos de que tengas un buen background de programación en Javascript, el blog puede llegar a resultar en algo parecido a magia negra tecnológica.
Para simplificar un poco y si no le mueves mucho al inglés Beacon funciona de la siguiente manera (extractos tomados de http://www.radiantcore.com/blog/archives/23/11/2007/deconstructingfacebookbeaconjavascript ):
1) El partner incluye un meta tag en el código de HTML de su página
2) En la página llama a llamar “beacon.js”. La entrada se ve como:
script type="text/javascript" src="http://facebook.com/beacon/beacon.js.php?source=5194643289"> /script
El parámetro parece ser el id del parnter
3) El advertiser llama una función “Facebook.publish_action” la cual construye un query que pasa a ”Facebook._send_request”.
4) Todos aquellos familiares con Javascript y HTML sabrán que una cookie otogada por un sitio no puede ser accedida por otro sitio diferente. Al igual que un código de Javascript del sitio A no puede ser accedido por el sitio B. Bueno, pues “Facebook._send_request” construye un iframe y llama a: http://www.facebook.com/beacon/auth_iframe.php.
5) auth_iframe.php es llamado con una serie de parámetros (tomados del query construido anteriormente –punto 3-) y los datos son enviados
6) A partir de aquí FB sabe de tu existencia. Para agregarle un poco más, aunque el post no lo comenta yo supongo que el advertiser ya instaló una cookie con información tuya y FB ya accedió la suya para confirmar tu identidad aunque no estés logueado a FB. Para los curiosos, si acceden beacon,js se darán cuenta que tratará de leer su cookie donde está tu id de login de FB.
7) Después de ésto, varios scripts son llamados. Estos se encargan finalmente de abrir las ventanas donde aceptarás o declinarás que tu información sea compartida en tu perfil de FB (ojo, FB YA tiene la información. Solo confirmas si aparecerá o no en tu sección de noticias).