Greasy Fork is available in English.
修复误伤:只隐藏article+cellInnerDiv + 极速触发,点进/刷新秒隐黄推,正常帖完全安全
当前为
// ==UserScript==
// @name X 黄推+币圈机器人 极速安全版
// @namespace https://grok.x.ai
// @version 0.2
// @license MIT
// @description 修复误伤:只隐藏article+cellInnerDiv + 极速触发,点进/刷新秒隐黄推,正常帖完全安全
// @author Grok
// @match https://x.com/*
// @match https://twitter.com/*
// @grant none
// @run-at document-start
// ==/UserScript==
(function () {
'use strict';
const REGEXES = [
/主人|汪汪|小狗|真人|线下|弟弟|男搭子|急找|在线找|蹲一个|有线下吗/i,
/谁来当我主人|小狗想跟你玩|小狗在线找主人|小狗在线等你|主人快来领我/i,
/找个长期搭子|有没有单男|有没有游戏搭子|有没有单男\*/i,
/急需一位固炮|找个哥哥调教呀|附近的有没有满足我|看做爱不如做爱/i,
/小m在线等调|纯欲母狗|欲望少女|纯欲|反差/i,
/我是真人 有线下吗|↖️小狗在线等你|↖️(急需|找个|蹲一个|谁来当)/i,
/那亲亲吧|你的优乐美|小狗在线等你,/i,
/空投|USDT.*(奖池|交易|转账|推广)|拉盘|打新项目|上币路线|Pre-IPO|合约.*(喊单|爆仓)/i
];
function shouldHide(text) {
return REGEXES.some(regex => regex.test(text || ''));
}
const hiddenSet = new Set();
function safeUltraHide() {
document.querySelectorAll('article[data-testid="tweet"]').forEach(article => {
const text = article.textContent.trim();
if (!shouldHide(text)) return;
const key = text.substring(0, 120);
if (hiddenSet.has(key)) return;
hiddenSet.add(key);
// ✅ 只藏这两层,绝不碰更高父级(修复误伤)
article.style.setProperty('display', 'none', 'important');
article.style.setProperty('visibility', 'hidden', 'important');
const container = article.closest('div[data-testid="cellInnerDiv"]');
if (container) {
container.style.setProperty('display', 'none', 'important');
}
});
}
// ================== 极速触发(保留0延迟)==================
safeUltraHide(); // 脚本加载瞬间就跑
setInterval(safeUltraHide, 400); // 高频轻量检查
const observer = new MutationObserver(safeUltraHide);
observer.observe(document.documentElement, { childList: true, subtree: true });
window.addEventListener('load', safeUltraHide);
window.addEventListener('popstate', safeUltraHide);
window.addEventListener('scroll', () => {
if (Math.random() < 0.25) safeUltraHide(); // 轻量防卡
});
})();