Advertisement
emerginginstance

Facebook adblock 15/11/2022

Nov 15th, 2022 (edited)
9,180
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 2.37 KB | Cybersecurity | 1 0
  1. // ==UserScript==
  2. // @name         ad block facebook
  3. // @version      4.3
  4. // @description  Facebook advert blocker script
  5. // @updateURL    https://pastebin.com/raw/azwkJETT
  6. // @downloadURL  https://pastebin.com/raw/azwkJETT
  7. // @include      https://*.facebook.*
  8. // @icon         https://www.google.com/s2/favicons?domain=facebook.com
  9. // @icon64URL    https://www.google.com/s2/favicons?domain=facebook.com
  10. // @run-at       document-idle
  11. // ==/UserScript==
  12.  
  13. /*
  14.  
  15. 4.3 change element removing to hiding instead to avoid a bug breaking fb page
  16. also started to keep track of updates here
  17.  
  18. */
  19.  
  20. (() => {
  21.  
  22.     let elementRouting = {}
  23.     const REMOVE_SUGGESTION = true
  24.     const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
  25.  
  26.     function getFeed() {
  27.         if(!elementRouting?.feed) elementRouting.feed = findFeed()
  28.         return elementRouting.feed
  29.     }
  30.  
  31.     function findFeed() {
  32.         let divs = document.querySelectorAll('div')
  33.         for(const div of divs)
  34.             if(Object.values(div)?.[1]?.children?.props?.id === 'feed')
  35.                 return div
  36.         return elementRouting?.feed
  37.     }
  38.  
  39.     setInterval(()=> elementRouting.feed = findFeed(), 5000) //relocate new feed source occasionally
  40.  
  41.     function feedletsFilter(element) {
  42.         let isFeed = Object.values(element)?.[1]?.children?.props?.variables?.feedLocation !== undefined
  43.         return isFeed
  44.     }
  45.  
  46.     function getFeedItems() {
  47.         let feedRoot = getFeed()
  48.         let feedItems = Array.from(feedRoot.querySelectorAll('div')).filter(feedletsFilter)
  49.         return feedItems
  50.     }
  51.  
  52.     function isAdvert(element) {
  53.         let props = Object.values(element)?.[1]?.children?.props
  54.         try {
  55.             let feedID = atob(props.story.id)
  56.             if(feedID.length > 700) return true
  57.         } catch { return false }
  58.         return false
  59.     }
  60.  
  61.     function removeFromPage(element) {
  62.         element.style.display = 'none'
  63.     }
  64.  
  65.     function removeStuff() {
  66.         let feedItems = getFeedItems()
  67.  
  68.         for(const advert of feedItems.filter(isAdvert))
  69.            removeFromPage(advert)
  70.  
  71.         if(REMOVE_SUGGESTION)
  72.             for(const feedItem of feedItems)
  73.                 if(feedItem.innerHTML.includes(">Suggested for you</span>")) removeFromPage(feedItem)
  74.     }
  75.  
  76.     async function advertKillingLoop() {
  77.         while(true) {
  78.             try {
  79.                 removeStuff()
  80.             } catch {}
  81.             await sleep(250)
  82.         }
  83.     }
  84.  
  85.     window.addEventListener('load', advertKillingLoop)
  86.  
  87. })()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement