// ==UserScript== // @name 屏蔽 CSDN // @version 1.0.1 // @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 https://greasyfork.org/users/1249199 // @downloadURL none // ==/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"]'); if (contentLeft) { for (let i = documents.length - 1; i >= 0; i--) { isRemove(documents[i]); } } else { 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(); }); })();