Greasy Fork is available in English.

Facebook ad blocker

Remove all ad from Facebook

  1. // ==UserScript==
  2. // @name Facebook ad blocker
  3. // @namespace https://wiki.gslin.org/wiki/FacebookAdBlocker
  4. // @version 0.20211227.0
  5. // @description Remove all ad from Facebook
  6. // @author Gea-Suan Lin <gslin@gslin.org>
  7. // @match https://www.facebook.com/*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. let observer = new MutationObserver(() => {
  16. document.querySelectorAll('div[data-pagelet^="FeedUnit_"], div[id^="hyperfeed_story_id_"], div[role="article"]').forEach(div => {
  17. // aria-label="Sponsored"
  18. div.querySelectorAll('div[aria-label="Sponsored"]').forEach(span => {
  19. console.info('Remove a Facebook ad element by aria-label="Sponsored".');
  20. div.innerHTML = '<p>Post hidden. Rule: aria-label="Sponsored"</p>';
  21. return;
  22. });
  23.  
  24. // <span>Sponsored
  25. div.querySelectorAll('span').forEach(span => {
  26. if (span.innerText.startsWith('Sponsored')) {
  27. console.info('Remove a Facebook ad element by starting with "Sponsored".');
  28. div.innerHTML = '<p>Post hidden. Rule: span[innerText^="Sponsored"]</p>';
  29. return;
  30. }
  31. });
  32.  
  33. div.querySelectorAll('b[style="display: none;"]').forEach(b => {
  34. let span = b.closest('span');
  35. if (span.innerText.startsWith('Sponsored')) {
  36. console.info('Remove a Facebook ad element by detecting obfuscation elements.');
  37. div.innerHTML = '<p>Post hidden. Rule: b span[innerText^="Sponsored"]</p>';
  38. div.remove();
  39. return;
  40. }
  41. });
  42. });
  43. });
  44.  
  45. observer.observe(document.documentElement, {
  46. attributes: false,
  47. childList: true,
  48. subtree: true,
  49. });
  50. })();