Программно Untag FB Фотографии с Javascript - PullRequest
30 голосов
/ 18 мая 2010

Я потратил последний час на хакерство: хочу написать подпрограмму Javscript, чтобы программно отделить себя от фотографий на Facebook. Как только это сработает, я запусту его в консоли Firebug и откреплюсь от всех фотографий на Facebook (это невозможно сделать через графический интерфейс).

Я хотел бы узнать, есть ли у вас, ребята, какой-нибудь совет, чтобы отвезти меня в мое путешествие.

Я имею в виду несколько методов, но пока не зашел слишком далеко. Я попробовал подход AJAX, создав новый HTML-запрос и указав его на URL-адресе remove_tag, который выглядит примерно так:

/ Ajax / photo_tagging_ajax.php? PID = (PICTURE_ID) & ID = (PICTURE_OWNER_ID) & при условии = (ТО) & имя = (ВАШ + имя) & действие = удалить * * 1016

Не удивительно, что это не работает (пока). Я проверял HTTP-ответ в Firebug, и он сильно отличается от того, когда я фактически размечал изображение. Это даже не отправка запроса POST.

Просто чтобы уточнить, я также попытался сделать getElementById для привязки "удалить тег", а затем выполнить switch.oo для document.location, но это не работает. Я также не могу сделать .click () для него.

Будет ли это вообще возможно или я сплю? (почти 4 утра)

Ответы [ 3 ]

7 голосов
/ 18 мая 2010

С DCoder , через Hacker News :

Использование Firebug, FireQuery, jQuery без конфликтов, как $ jq, изнутри страницы фотографии (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);

Он не обновляет интерфейс. Fb_dtsg и post_form_id являются обязательными и, по-видимому, являются токенами анти-CSRF. Не экспериментировали достаточно, чтобы узнать, можно ли их многократно использовать.

3 голосов
/ 20 мая 2010

Так как я не уверен, что вы подобрали мою обновленную версию на 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 голос
/ 18 мая 2010

Chickenfoot http://groups.csail.mit.edu/uid/chickenfoot/ - плагин Firefox, который может быть альтернативой использованию консоли Firebug: вы можете писать макросы / скрипты для автоматизации повторяющихся задач в вашем браузере. Действия, которые вы кодируете, ничем не отличаются от того, что вы нажимаете, заполняете формы или что-то другое. Насколько я помню, есть интерфейс DOM для обхода HTML и т. Д.

...