分享一个极简 twitter/x 广告拉黑脚本

查看 58|回复 5
作者:june4   
现在广告实在是多,影响看评论了。
随手写的,原理很简单,就是找到推主名字或推文里有关键词的,全部 mute 帐号。twitter 的 mute 数量似乎没有上限,放心用。
(function() {
  const AD = [
    /只入身体不入生活/,
    /我福不黑不信你看/,
    /有人想锐评一下我的福嘛/,
    /比我骚的没我好看/,
    /比她骚的没她好看/,
    /刷了半天的 X就她的主页/,
    /就她主页能打/,
    /就她的主页能打/,
    /刷了半天的 X/,
    /太涩了.*我真顶不住/,
    /体制内老师/,
    /没人比她 sao/,
    /线下 sao 货/,
    /比她 sao/,
    /比我 Sao/,
    /sao 的很/,
    /她好涩/,
    /体制内幼师/,
    /给你看福/,
    /免费破处/,
    /线下约见入口/,
    /返佣.+领取/,
    /催情.*听话/
  ]
  const sleep = ms => new Promise(r => setTimeout(r, ms))
  function kill(el) {
    const article = el.closest('article');
    if (!article) {
      console.info('[AdBlock] error: no article')
      return;
    }
    const btnArr = article.querySelectorAll('button[aria-haspopup="menu"][role="button"][data-testid="caret"]');
    if (btnArr.length !== 1) {
      console.info('[AdBlock]', 'error: btnArr.length', btnArr.length)
      return;
    }
    setTimeout(() => {
      btnArr[0].click();
      setTimeout(() => {
        const menuArr = document.querySelectorAll('div[data-testid="Dropdown"]');
        if (menuArr.length !== 1) {
          console.info('[AdBlock] error: menuArr.length', menuArr.length)
          return
        }
        for (const mi of menuArr[0].querySelectorAll('div[role="menuitem"]')) {
          console.log('[AdBlock] MenuItem:', mi.innerText);
          if (/^(隐藏|Mute)$/u.test(mi.innerText)) {
            console.log('[AdBlock] Exec Menu', mi.innerText);
            mi.click();
            break;
          }
        }
      }, 200);
    }, 10);
  }
  let killing = false
  async function killAll() {
    if (!/\/status\//.test(location.pathname)) return
    if (killing) return
    console.info('[AdBlockAll] start')
    killing = true
    const texts = document.querySelectorAll('div[data-testid="tweetText"],div[data-testid="User-Name"]')
    console.log('[AdBlockAll] text length:', texts.length)
    for (const text of texts) {
      const textContent = text.textContent
      for (const re of AD) {
        if (re.test(textContent)) {
          console.warn('[AdBlockAll] Found Ad!', textContent)
          kill(text)
          await sleep(1000)
        }
      }
    }
    killing = false
  }
  async function handleKeydown(ev) {
    if (!(ev.altKey && ev.shiftKey && !ev.ctrlKey && ev.key === 'K')) return;
    await killAll()
  }
  document.addEventListener('keydown', handleKeydown, true);
  setInterval(() => {
    killAll()
  }, 5000)
})();

广告, 脚本, 屏蔽

Quarter   
啊,很熟悉的关键词啊,都快变成精神污染了
JunJian   
建议打扫黑除恶电话举报
tyzrj766   
直接在 https://x.com/settings/muted_keywords 设置就好了
Need4more   
https://github.com/foru17/make-x-great-again
Need4more   
@JunJian 这个支持评论区的屏蔽吗?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部