facebook apps, quiz, ads, and spam remover

By Justin W Last update May 5, 2011 — Installed 28,483 times.

There are 72 previous versions of this script.

// ==UserScript==
// @name           facebook.com - external apps blocker
// @author         Justin Wheeler
// @version        3.37
// @description    blocks all external apps stories (ie. quizzes) on homepage, and profiles.
// @require        http://buzzy.hostoi.com/AutoUpdater.js
// @include        http://www.facebook.com/*
// ==/UserScript==

var script_id      = 46009;
var script_version = '3.37';

var blacklist = new Array(
    "facebook.com/apps",
    "quiz.applatform.com",
    "yoville.com",
    "apps.facebook.com",
    "apps.new.facebook.com",
    "bigprize.com",
    "thebizmeet.com",
    "twitter.com/chanelle1905",
    "friend.ly",
    "360elite4free.com",
    "11831_105302089483231_100000103201699_133845_8196890_s.jpg",
    "/apps/application.php",
    "articleget.cn",
    "articleget,cn",
    "rifftrax.com%252Fsweepstakes",
    "futureshop.ca/give",
    "HomeMoneyMake dot com",
    "homemoneymake.com",
    '<div class="UITitle UITitle_h5">Sponsored</div>',
    'frolt.com',
    'FarmVille Photos',
    'facebook.com/TexasHoldEm',
    'facebook.com/pages/FarmVille',
    'FarmVille Cash Photos'
);

var app_whitelist = new Array(
    '4620273157',      // facebook for palm os.
    '115463795461',    // twitter status update
    '8109791468',      // status shuffle
    '6628568379',      // facebook for iphone
    '2254487659',      // facebook for blackberry.
    '74769995908',     // facebook for android
    '5747726667',      // facebook for xbox
    '128581025231',    // marketplace postings
    '2231777543',      // facebook for twitter
    '21370137768',     // flickr image uploading
    '146139331013',    // tweetdeck for iphone
    '8324839461',      // loopt
    '56212371378',     // tweetdeck
    '10732101402',     // ping.fm
    '183319479511',    // hootsuite
    '2915120347',      // mobile web
    '2915120374',      // mobile web
    '350685531728',    // facebook for android
    '1394457661837',   // text message updates
    '135488932982',    // smart twitter
    '38997159460',     // photobucket.
    '247431880944',    // droid,
    '6195724695',      // windows phone
    '162843607082809', // mypad for ipad
    '131732509879',    // twitterfeed
    '10754253724',     // iphoto updater
    '101622214608'     // aperture uploader
);

var whitelist = new Array(
    'Photos</h5>' // Facebook Photos
);

function in_list( list, text, prefix ) {
    for (var host_idx = 0; host_idx < list.length; host_idx++) {    
        if (text.toUpperCase().indexOf(prefix.toUpperCase() + list[ host_idx ].toUpperCase()) >= 0)
            return 1;
    }

    return 0;
}

function should_be_wiped( html ) {
    if ( html.match(/and get.*(?:farm\s*ville|mafia\s*wars)/i) ) {
	    return 1;
    }

    if ( !in_list( blacklist, html, "" ) ) {
        return 0;
    }

    if ( in_list( app_whitelist, html, "/apps/application.php?id=" ) ) {
        return 0;
    }

    if ( in_list( whitelist, html, "" ) ) {
        return 0;
    }

    return 1;
}
    
function check_page() {
    check_contents( document.getElementsByTagName('div') );
    check_contents( document.getElementsByTagName('li')  );

    return;
}

function check_contents( stories ) {
    var count = stories.length;

    for (var i = count - 1; i >= 0; i--) {
        if (   stories[i].id.indexOf("div_story_") == 0
            || stories[i].className == 'box'
            || stories[i].className.indexOf('uiStreamStory') >= 0
            || stories[i].className.indexOf('album') >= 0
            || stories[i].className.indexOf('UIHomeBox_Sponsored') >= 0) {

            if ( should_be_wiped( stories[i].innerHTML ) ) {
                stories[i].style.display = 'none';
                // For Debugging
                //stories[i].style.border = "1px solid red";

                var children = stories[i].parentNode.childNodes.length;

                for (var cur_child = 0; cur_child <= children; cur_child++) {
                    var this_one = stories[i].parentNode.childNodes[ cur_child     ];
                    var next_one = stories[i].parentNode.childNodes[ cur_child + 1 ];

                    if (this_one == stories[i]
                     && next_one
                     && next_one.innerHTML.indexOf("more similar stories") > 0) {
                        next_one.style.display = 'none';
                        //next_one.style.border = "1px solid red";
                    }
                }
            }
        }
    }
}

var page_length;

function wipe_apps() {
    if (page_length != document.getElementsByTagName('body')[0].innerHTML.length) {
        page_length = document.getElementsByTagName('body')[0].innerHTML.length;

        var ad_column = document.getElementsByClassName('adcolumn');

        if (ad_column.length) {
            for (var cur_col = 0; cur_col < ad_column.length; cur_col++) {
                //ad_column[cur_col].style.border = '1px solid red';
                ad_column[cur_col].style.display = 'none';
            }
        }

        if (document.getElementById('pagelet_connectbox')) {
            document.getElementById('pagelet_connectbox').style.display = 'none';
        }

        check_page();
    }
}

var timer;

window.addEventListener("load",  function () { timer = setTimeout( wipe_apps, 1000 ) }, true);
window.addEventListener('scroll', function () { clearTimeout( timer ); timer = setTimeout( wipe_apps, 500 ) }, true);

autoUpdate(script_id, script_version);