Desagregar programáticamente Fotos FB con Javascript


He pasado la última hora hackeando esto: Quiero escribir una rutina Javscript para desagregarme programáticamente de fotos en Facebook. Una vez que funcione, lo ejecutaré en la consola Firebug y quitaré las etiquetas de todas las fotos de Facebook (no hay manera de hacer esto a través de la interfaz gráfica de usuario).

Quería ver si tenían algún consejo para llevarme en mi viaje.

Tengo algunos métodos en mente, pero todavía no he llegado demasiado lejos. He intentado un enfoque AJAX mediante la creación de un nuevo Petición HTML y apuntando a la URL remove_tag, que se ve algo como esto:

/ajax/photo_tagging_ajax.php?pid=(PICTURE_ID)&id=(PICTURE_OWNER_ID)&subject=(SOMETHING)&name=(YOUR+NAME)&action=remove

No es sorprendente que esto no funcione (todavía). He estado comprobando la respuesta HTTP en Firebug y es bastante diferente a la que cuando en realidad desenredar una imagen. Ni siquiera está enviando una solicitud de CORREO.

Solo para aclarar, también he intentado hacer un getElementById en el ancla "eliminar etiqueta", y luego hacer un documento.ubicación switcharoo, pero eso no funciona. Tampoco puedo hacer una .haga clic en () en él.

¿Será esto posible o estoy soñando? (son casi las 4AM)

Author: Tal, 2010-05-18

3 answers

Ya que no estoy seguro si recogió mi versión actualizada en HN:

  var loc = window.location.href.split('?')[1].split('#')[0].split('&');
  var qs = {};
  $jq.each(loc, function(ix, el) {
   var m = el.split('='), k = m[0], v = m[1];
   qs[k] = v;
  });

  var args = {
    pid: qs.pid, // photo ID
    id: qs.id, // photo owner ID
    subject: Env.user, // user ID to remove
    name: '', // not checked
    action: 'remove',
    __a: 1,
    fb_dtsg: Env.fb_dtsg,
    post_form_id: Env.post_form_id,
    post_form_id_source: 'AsyncRequest'
  };

  $jq.post('/ajax/photo_tagging_ajax.php', args);
 3
Author: DCoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-20 18:40:27

Desde DCoder , a través de Hacker News :

Usando Firebug, FireQuery, jQuery no conflict como j jq, desde dentro de una página de fotos ( http://www.facebook.com/photo.php?pid=xxx&id=y) :

  var loc = window.location.href.match(/pid=(\d+)&id=(\d+)/);

  var args = {
    pid: loc[1], // photo ID
    id: loc[2], // request sender id? photo owner id? not sure, haven't tested, but my user ID worked when trying to remove someone from a photo in my album
    subject: loc[2], // user ID to remove
    name: '', // not checked
    action: 'remove',
    __a: 1,
    fb_dtsg: $jq('input[name="fb_dtsg"]').val(),
    post_form_id: $jq('#post_form_id').val(),
    post_form_id_source: 'AsyncRequest'
  };

  $jq.post('/ajax/photo_tagging_ajax.php', args);

No actualiza la interfaz de usuario. El fb_dtsg y post_form_id son requeridos y parecen ser tokens anti-CSRF. No he experimentado lo suficiente para saber si pueden ser reutilizados varias veces.

 7
Author: Zack Burt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-18 09:47:17

Chickenfoot http://groups.csail.mit.edu/uid/chickenfoot/ es un plugin para Firefox que podría ser una alternativa al uso de la consola Firebug: puede escribir macros / scripts para automatizar tareas repetitivas en su navegador. Las acciones para las que codificas no son diferentes a hacer clic, rellenar formularios o lo que sea. Por lo que puedo recordar, hay una interfaz DOM para atravesar html, etc.

 1
Author: Richard H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-18 09:17:43