2010-05-18 11 views
30

He pasado la última hora pirateando esto: quiero escribir una rutina de Javscript para desvincularme programáticamente de mis fotos en Facebook. Una vez que funcione, lo ejecutaré en la consola Firebug y me quitaré la etiqueta de todas las fotos de Facebook (no hay forma de hacerlo a través de la GUI).Programáticamente Untag FB Photos con Javascript

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

Tengo algunos métodos en mente pero todavía no he avanzado demasiado. He intentado un enfoque AJAX mediante la creación de una nueva solicitud de HTML y apuntando a la URL remove_tag, que es como la siguiente:

/ajax/photo_tagging_ajax.php?pid= (PICTURE_ID) & id = (PICTURE_OWNER_ID) & subject = (algo) & name = (TU + nOMBRE) & action = eliminar

No

surprisin Gly, esto no funciona (todavía). Estuve revisando la respuesta HTTP en Firebug y es bastante diferente de la que hice cuando eliminé la etiqueta. Ni siquiera está enviando una solicitud POST.

Solo para aclarar, también he intentado hacer un getElementById en el anclaje "eliminar etiqueta", y luego hacer un switcheoo de ubicación del documento, pero eso no funciona. Tampoco puedo hacer un .click() en él.

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

+8

+1 para las fotos desetiquetado de Facebook. –

+0

Gracias. Necesitamos encontrar una manera de hacer esto. Por cierto, me inspiré en esto: http://www.reclaimprivacy.org – Tal

Respuesta

3

Ya que no estoy seguro si usted tomó 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); 
1

Chickenfoot http://groups.csail.mit.edu/uid/chickenfoot/ es un complemento de 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 que codifica no son diferentes a las que realmente hace clic, llena formularios o lo que sea. Por lo que yo puedo recordar existe una interfaz DOM para atravesar html etc.

7

De DCoder, a través de Hacker News:

Usando Firebug, FireQuery, jQuery ningún conflicto como $ JQ, desde el interior de una sección 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 IU. El fb_dtsg y el post_form_id son obligatorios y parecen ser tokens anti-CSRF. No han experimentado lo suficiente como para saber si pueden volver a usarse varias veces.

+0

Voy a probar esto. ¡Nunca usé FireQuery pero esto parece prometedor! – Tal

+0

Ese regex falta un caso. Facebook a veces tiene algún inconveniente entre el pid y el id. Simplemente agregue. * Entre medio y funcionará: var loc = window.location.href.match (/ pid = (\ d +). * & Id = (\ d +) /); En una mirada superficial, esto no funciona para mí. Sí envía algún tipo de solicitud, pero la imagen permanece etiquetada. – Tal

Cuestiones relacionadas