Skip to content

Instantly share code, notes, and snippets.

@bluetidepro
Last active December 29, 2023 06:27
Show Gist options
  • Star 37 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save bluetidepro/bfa60c1d63925180daf3dd53e5ff48ea to your computer and use it in GitHub Desktop.
Save bluetidepro/bfa60c1d63925180daf3dd53e5ff48ea to your computer and use it in GitHub Desktop.
Auto click "remove" on all facebook advertisers and Twitter interests
// I did this in Chrome...
//
// Go to https://www.facebook.com/ads/preferences/
// Click the "Advertisers" section to open it up.
// Click "See more" once
// Before doing anything else, just keep clicking space bar to trigger the "see more" button
// Do this for a bit until all the advertisers are loaded
// then run this below in the dev tools console...
// (It will take a few minutes, depending how many you have, and your browser may lock up, but once it's done you will see it auto clicked the "remove" X in the top right for all of them)
// This finds all the "remove" buttons in all the ads
var fbook_ads = document.getElementsByClassName('_2b2p _4jy0 _4jy3 _517h _51sy _42ft');
console.log(fbook_ads.length, 'The number of advertisers listed! YIKES.');
// Loop the list of buttons
Array.prototype.forEach.call(fbook_ads, (e) => {
// Check if you have removed the advertiser already (sometimes ones you have already removed still show/load)
if (e.getAttribute('data-tooltip-content') === 'Remove' || e.getAttribute('data-tooltip-content') === 'Hide all ads from this advertiser') {
// click the button and remove them
e.click();
console.log('Removed!');
} else {
// Skip ones that you have already removed
console.log('Skipped!');
}
})
// For Twitter
// Go to https://twitter.com/settings/your_twitter_data/twitter_interests
// Run this below to uncheck all the interests
var twitter_interests = document.getElementsByTagName("input"),
twitter_interests_count = 0;
Array.prototype.forEach.call(twitter_interests, (e) => {
if (e.type === "checkbox" && e.checked === true) {
var interest_label = e.parentNode.parentNode.getElementsByTagName("span")[0].innerText;
// click the checkbox and remove them
e.click();
console.log('Removed "' + interest_label + '"!');
twitter_interests_count++;
}
})
if (twitter_interests_count === 0) {
console.log('horray, no interests!');
} else {
console.log(twitter_interests_count, 'The number of interests listed! YIKES.');
}
@dougwebb
Copy link

I used a one-liner for this:
document.querySelectorAll("[data-tooltip-content='Remove']").forEach(function (element) { element.click(); })

Basically the same, but by using querySelectorAll I get just the Remove buttons, and none of the Add buttons.

@bluetidepro
Copy link
Author

@dougwebb yeah, def. The only benefit I found personally with finding the ones skipped was it's good to see the the full list, if you needed.

@freeAgent85
Copy link

freeAgent85 commented Jun 8, 2019

It looks like Facebook have updated the page, so your code doesn't work fully. You now need another selector:

document.querySelectorAll("[data-tooltip-content='Remove'],[data-tooltip-content='Hide all ads from this advertiser']").forEach(function (element) { element.click(); })

@bluetidepro
Copy link
Author

@freeAgent85 Good call, I updated it!

@bluetidepro
Copy link
Author

Update: looks like this no longer works because of the dark patterns that Facebook has updated/changed on that page. Ugh.

@freeAgent85
Copy link

Yup, the new section for "Who Uploaded a List With Your Information" is awful. They don't even do users the courtesy of indicating which companies they've previously blocked until they click "View Controls" on the entry. And the list is randomly sorted, not in alphabetical or chronological order. This move pushed me ever-closer to simply closing my Facebook account and being done with it entirely.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment