Greasy Fork

来自缓存

Greasy Fork is available in English.

Telegram Web K - 广告气泡毁灭者

针对Bot广告特殊优化:找到关键词后,向上追溯并移除整个 .bubble 气泡容器。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Telegram Web K - 广告气泡毁灭者
// @namespace    http://tampermonkey.net/
// @version      3.0
// @description  针对Bot广告特殊优化:找到关键词后,向上追溯并移除整个 .bubble 气泡容器。
// @author       You
// @match        https://web.telegram.org/k/*
// @grant        none
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // ================= 关键词设置 =================
    // 你可以在这里添加你想屏蔽的任何词
    const keywords = [
        "广告位",
        "出售",
        "点击我私聊",
        "防失联",
        "红包",
        "机场分享",
        "USDT",
        "兼职",
        "福利",
        "印度药",
        "本群承接",
        "专业推广",
        "点击我私聊",
        "点击头像",
        "防失联",
        "防走丢",
        "备用号",
        "关注频道",
        "跑分",    // 洗钱黑话
        "承兑",       // 换汇黑话
        "回U",        // 换币
        "下发",       // 资金下发
        "费率",       // 通常指洗钱费率
        "点位",       // 同上
        "四件套",     // 买卖银行卡/身份证
        "实名号",     // 买卖账号
        "查档",       // 违法人肉搜索
        "定位",       // 非法定位服务
        "开房记录",   // 隐私查询
        "轰炸",       // 短信/电话轰炸
        "数据源",     // 贩卖个人信息
        "精准粉",     // 流量贩卖
        "引流",       // 推广黑话
        "兼职",
        "日结",
        "宝妈",       // 针对宝妈的刷单诈骗
        "手工",       // 手工活诈骗
        "不限地区",
        "在家可做",
        "无需押金",
        "日赚",
        "月入",
        "上门",
        "同城",
        "包夜",
        "喝茶",
        "修车",       // 约炮黑话
        "全套",
        "莞式",
        "裸聊",
        "萝莉",       // 炼铜/色情引流高频词
        "反差",
        "私拍",
        "包赢",
        "内幕",
        "特码",
        "六合",
        "彩票",
        "倍投",
        "流水",       // 博彩流水
        "娱乐城",
        "Sponsored Message",  // 官方硬广
        "Proxy Sponsor"       // 代理赞助
    ];
    // ============================================

    console.log('TG Web K 气泡毁灭者已就绪...');

    function nukeAdBubbles() {
        // 1. 策略改变:不找气泡,直接找所有包含文本的底层元素
        // 这样可以确保即使文字被藏在很深的 span 里也能被揪出来
        // 我们遍历所有的 div, span, p, text nodes 可能太慢,
        // 所以我们还是先抓 .bubble,但用 textContent (无视 display:none) 来检查

        const bubbles = document.querySelectorAll('.bubble');

        bubbles.forEach(bubble => {
            // 如果已经标记为处理过,跳过
            if (bubble.getAttribute('data-ad-scanned') === 'true') return;

            // 使用 textContent 而不是 innerText
            // 区别:innerText 只有显示的文本,textContent 包含所有文本(即使被其他脚本隐藏了也能读到)
            const rawText = bubble.textContent || "";

            // 简单的关键词匹配
            const isAd = keywords.some(key => rawText.includes(key));

            if (isAd) {
                // 找到了!
                // 直接隐藏整个 bubble
                bubble.style.display = 'none';

                // 打个标记,方便调试(可选)
                bubble.setAttribute('data-ad-removed', 'true');
                console.log(`[V3毁灭者] 已移除一条广告气泡,包含关键词: ${rawText.substring(0, 15)}...`);
            }

            // 标记已扫描
            bubble.setAttribute('data-ad-scanned', 'true');
        });
    }

    // 监听 DOM 变化
    const observer = new MutationObserver((mutations) => {
        // 每次变动都扫描,Telegram 性能通常扛得住
        nukeAdBubbles();
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    // 启动延时,确保页面加载
    setTimeout(nukeAdBubbles, 1000);
    setTimeout(nukeAdBubbles, 3000); // 再补一刀,防网速慢

})();