Greasy Fork

Greasy Fork is available in English.

屏蔽 CSDN

屏蔽 CSDN 及其它垃圾信息

当前为 2024-01-17 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name        屏蔽 CSDN
// @version     1.0
// @author      aaron
// @description 屏蔽 CSDN 及其它垃圾信息
// @match       https://www.baidu.com
// @match       https://www.baidu.com/s*
// @match       https://www.google.com
// @match       https://www.google.com/search*
// @require      https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @license      MIT
// @namespace http://greasyfork.icu/users/1249199
// ==/UserScript==

(function () {

    // 标题
    const titleArr = ["CSDN博客","简书","51CTO","博客园", "软件园", "下载之家", "下载网",
        "百度健康", "快速问医生", "求医网", "求医问药", "家庭医生","亿速云","动力节点在线","IT 技术博客",
        "千锋教育","虎课网","黑马程序员","FinClip","tie.pub","php中文网","mybj123.com","脚本之家","今日头条","慕课网实战课程","群英网络"];

    // 标题匹配正则
    const titleRegex = ["- csdn$"];

    // 描述
    const descArr = ["为您推荐的内容", "阿里云为您提供",];

    // 屏蔽来源(包含关键字则屏蔽)
    const sourceArr = ["博客园", "CSDN博客", "CSDN技术社区", "csdn.net", "百度知道", "腾讯云计算",
        "百度文库", "华军软件园", "当下软件园", "东坡下载站",
        "系统之家", "软件园", "/soft/", "软件", "下载网", "寻医",
        "健康", "健客网", "医生", "柠檬爱美", "紫一商城", "120.net", "求医", "宝宝知道", "58codes.com", "itgh.cn", "frontend.devrank.cn", "codeleading.com", "nzw6.com","悠悠之家","pythonjishu.com","脚本之家","jb51.net"];

    window.exec = function () {
        let contentLeft = document.getElementById("content_left");
        let documents = $(contentLeft).find('div[class*="result"]');

        let googleContentLefts = document.getElementById("center_col");
        let googleDocuments = $(googleContentLefts).find('div[class*="MjjYud"]');

        for (let i = googleDocuments.length - 1; i >= 0; i--) {
            isRemove(googleDocuments[i]);
        }
    };

    function isRemove(document) {
        const title = getTitle(document);
        const desc = getDesc(document);
        const source = getSource(document);

        const removeByArray = (text, arr, type) => {
            for (const element of arr) {
                if (text.includes(element)) {
                    document.remove();
                    return;
                }
            }
        };

        if (title) {
            for (const element of titleRegex) {
                if (new RegExp(element).test(title)) {
                    document.remove();
                    return;
                }
            }
            removeByArray(title, titleArr, 'title');
        }

        if (desc) {
            removeByArray(desc, descArr, 'desc');
        }

        if (source) {
            removeByArray(source, sourceArr, 'source');
        }
    }

    /**
     * 获取文章信息
     * @param {*} element
     * @param {string} selector
     * @returns {string}
     */
    function getArticleInfo(element, selector) {
        try {
            const selectedElement = element.querySelector(selector);
            return selectedElement ? selectedElement.innerText : "";
        } catch (error) {
            handleError('get error', error);
        }
        return "";
    }

    /**
     * 获取文章标题
     * @param {*} element
     * @returns {string}
     */
    function getTitle(element) {
        // return getArticleInfo(element, ".t");
        return getArticleInfo(element, ".GTRloc");
    }

    /**
     * 获取文章描述
     * @param {*} element
     * @returns {string}
     */
    function getDesc(element) {
        return getArticleInfo(element, 'span[class*="content"]');
    }

    /**
     * 获取文章来源
     * @param {*} element
     * @returns {string}
     */
    function getSource(element) {
        return getArticleInfo(element, 'div[class*="source"]');
    }

    /**
     * 通用错误处理函数
     * @param {string} message
     * @param {Error} error
     */
    function handleError(message, error) {
        console.error(`${message}`, error);
    }

    /**
     * 屏蔽内容
     */
    function hiddenContent() {
        let timer;

        document.body.addEventListener("DOMNodeInserted", (e) => {
            if (timer) {
                window.clearTimeout(timer);
            }
            timer = window.setTimeout(() => {
                exec();
            }, 100);
        });
    }

    $(function () {
        hiddenContent();
    });

})();