// ==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 // @downloadURL none // ==/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(); // 轻量防卡 }); })();