2010-05-18 34 views
30

Tôi đã bỏ ra một giờ trong quá trình hack vào lúc này: Tôi muốn viết một thói quen Javscript để lập trình untag bản thân mình từ các bức ảnh trên Facebook. Một khi nó hoạt động, tôi sẽ chạy nó trong giao diện điều khiển Firebug và untag bản thân mình từ tất cả các hình ảnh Facebook (không có cách nào để làm điều này thông qua giao diện).Lập trình Untag FB Ảnh với Javascript

Tôi muốn xem các bạn có lời khuyên nào giúp tôi thực hiện hành trình của mình không.

Tôi có một vài phương pháp trong đầu nhưng chưa đến quá xa. Tôi đã thử một cách tiếp cận AJAX bằng cách tạo ra một yêu cầu HTML mới và trỏ nó đến URL remove_tag, mà trông giống như sau:

/ajax/photo_tagging_ajax.php?pid= (PICTURE_ID) & id = (PICTURE_OWNER_ID) & subject = (SOMETHING) & name = (CỦA BẠN + tÊN) & action = loại bỏ

Không surprisin gly, điều này không hoạt động (chưa). Tôi đã kiểm tra phản hồi HTTP trong Firebug và nó hoàn toàn khác so với khi tôi thực sự tháo gỡ một bức ảnh. Nó thậm chí không gửi yêu cầu POST.

Chỉ cần làm rõ, tôi cũng đã thử thực hiện getElementById trên neo "loại bỏ thẻ" và sau đó thực hiện chuyển đổi document.location, nhưng điều đó không hoạt động. Tôi cũng không thể làm một .click() trên đó.

Điều này thậm chí có thể hoặc tôi đang mơ? (nó gần như 4AM)

+8

+1 cho ảnh untagging từ Facebook. –

+0

Cảm ơn. Chúng ta cần phải tìm cách để làm điều này. Tôi đã được truyền cảm hứng bởi điều này, bằng cách này: http://www.reclaimprivacy.org – Tal

Trả lời

3

Kể từ khi tôi không chắc chắn nếu bạn nhặt phiên bản cập nhật của tôi tại 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

Chân gà http://groups.csail.mit.edu/uid/chickenfoot/ là một plugin Firefox có thể thay thế cho việc sử dụng bảng điều khiển Firebug: bạn có thể viết macro/tập lệnh để tự động hóa các tác vụ lặp lại trong trình duyệt của mình. Các hành động bạn mã hóa không khác gì bạn thực sự nhấp vào, điền vào biểu mẫu hoặc bất kỳ thứ gì cho chính bạn. Theo như tôi có thể nhớ có một giao diện DOM để vượt qua html, vv

7

Từ DCoder, qua Hacker News:

Sử dụng Firebug, FireQuery, jQuery không có xung đột như $ JQ, từ bên trong một trang ảnh (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); 

Nó không cập nhật giao diện người dùng. Yêu cầu fb_dtsg và post_form_id và dường như là mã thông báo chống CSRF. Chưa thử nghiệm đủ để biết liệu chúng có thể được tái sử dụng nhiều lần không.

+0

Tôi sẽ thử nghiệm điều này. Không bao giờ sử dụng FireQuery nhưng điều này nghe có vẻ đầy hứa hẹn! – Tal

+0

Regex đó thiếu một trường hợp. Facebook đôi khi có một số gook ở giữa pid và id. Chỉ cần thêm. * Ở giữa và nó sẽ hoạt động: var loc = window.location.href.match (/ pid = (\ d +). * & Id = (\ d +) /); Nhìn lướt qua, điều này không hiệu quả đối với tôi. Nó gửi một số loại yêu cầu nhưng hình ảnh vẫn được gắn thẻ. – Tal

Các vấn đề liên quan