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

发布于

现在广告实在是多,影响看评论了。

随手写的,原理很简单,就是找到推主名字或推文里有关键词的,全部 mute 帐号。twitter 的 mute 数量似乎没有上限,放心用。

```javascript
(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)
})();
```

---

原文链接:[点击查看](https://www.v2ex.com/t/1234632)

评论(1)

这些关键词看着太眼熟了,刷 X 的时候到处都是,都快被精神污染了,楼主这脚本来得及时。

· 0 个赞

0.054572s