// ==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();
});
})();