- // ==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 https://gf.qytechs.cn/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();
- });
-
- })();