使用Javascript以编程方式Untag FB照片

时间:2010-05-18 07:38:14

标签: javascript ajax facebook privacy

我花了一个小时的时间来讨论这个问题:我想编写一个Javscript例程,以编程方式从Facebook上的照片中删除自己。一旦它工作,我将在Firebug控制台中运行它并从所有Facebook照片中取消自己(没有办法通过GUI执行此操作)。

我想看看你们是否有一些建议让我踏上旅途。

我有一些方法,但还没有走得太远。我通过创建一个新的HTML请求并将其指向remove_tag URL来尝试AJAX方法,该URL看起来像这样:

  

/ajax/photo_tagging_ajax.php?pid=的(PICTURE_ID)和ID = (PICTURE_OWNER_ID)&安培受试者= (东西) &安培;名称= (YOUR + NAME)&安培;行动=除去

毫不奇怪,这还不行。我一直在检查Firebug中的HTTP响应,它与我实际解开图片的情况完全不同。它甚至没有发送POST请求。

为了澄清,我还尝试在“删除标记”锚点上执行getElementById,然后执行document.location switcharoo,但这不起作用。我也不能对它做一个.click()。

这甚至是可能还是我在做梦? (差不多凌晨4点)

3 个答案:

答案 0 :(得分:7)

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);

它不会更新UI。 fb_dtsg和post_form_id是必需的,似乎是反CSRF令牌。没有经过足够的实验来了解它们是否可以多次重复使用。

答案 1 :(得分:3)

因为我不确定你是否在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);

答案 2 :(得分:1)

Chickenfoot http://groups.csail.mit.edu/uid/chickenfoot/是一个Firefox插件,可能是使用Firebug控制台的替代方案:您可以编写宏/脚本来自动执行浏览器中的重复任务。您编写的操作与您实际单击,填充表单或其他任何内容没有什么不同。据我所知,有一个用于遍历html等的DOM接口。