Greasy Fork

Greasy Fork is available in English.

X 黄推+币圈机器人 极速安全版

修复误伤:只隐藏article+cellInnerDiv + 极速触发,点进/刷新秒隐黄推,正常帖完全安全

当前为 2026-03-22 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

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

})();