CSDN版面越来越乱,最近还总是弹出红包雨和顶部巨大横幅,左侧也会随机出现学生认证弹窗。而且版面混乱难看,看起来非常费劲。
另外底下的推荐列表经常夹杂着CSDN文件下载的链接,下载文件又要付费,从来不会用CSDN的下载,只希望能在推荐列表里看看博客,所以顺便把底下推荐列表中的下载推荐链接也去掉了,只剩下博客的链接。
所以写了一个净化CSDN的油猴脚本,效果还可以。
CSDN博客默认打开效果:
使用脚本净化后的效果:
0.6.3 加入目录后的效果:
*0.5.1更新(2021-11-02):右侧边栏去除
*0.5.2更新(2022-07-03):顶栏左侧按钮错位修复
*0.6.4更新(2023-02-09):左侧保留CSDN自带目录,阅读长文更方便
*0.7.0更新(2023-04-16):1.删除右上角创作按钮的动画广告 2.代码免登录复制
油猴(TamperMonkey)里创建一个新脚本,直接复制进去就能用。
// ==UserScript==
// @name CSDN净化
// @namespace http://tampermonkey.net/
// @version 0.7.0
// @description fuck you csdn!
// @author Sanders
// @match *://blog.csdn.net/*
// @match *://bbs.csdn.net/*
// @icon https://blog.csdn.net/favicon.ico
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// 背景调成深色,看起来更舒适
$("body").css("background-color", "dimgray");
// 删除侧边栏热门文章
var hotArticle = document.getElementById("asideHotArticle");
if (hotArticle != null) {
hotArticle.remove();
}
// 右侧的目录
const content = document.getElementById("groupfile");
//document.getElementById("asidedirectory"); // 左侧目录,不稳定,窄页面会显示,页面变宽就不显示了
//document.getElementById("groupfile"); // 右侧目录,稳定,始终会显示
// 直接删除左侧边栏
const sideBar = document.getElementsByClassName("blog_container_aside")[0]
if (sideBar != null) {
sideBar.remove();
}
// 删除右侧边栏
const rightSideBar = document.getElementById("rightAside");
if (rightSideBar != null) {
rightSideBar.remove();
}
if (content != null) {
// 不设置这个目录不能滚动
content.setAttribute("style", "overflow: scroll;");
// 设置高度
//content.setAttribute("style", "height: fit-content;");
// 创建一个新的左边栏
var blogContainerAside = document.createElement("aside");
// 设置class为左边栏的
blogContainerAside.setAttribute("class", "blog_container_aside");
// 位置固定在顶部
blogContainerAside.setAttribute("style", "position: fixed; top: 56px; left: 5%");
// 把之前保存的目录塞进新左边栏
blogContainerAside.appendChild(content);
// 添加左边栏到mainBox
document.getElementById("mainBox").appendChild(blogContainerAside);
// 设置左侧间距, 9%左右刚好能让正文居中,让视觉中心看在正文上,平衡不受左侧目录影响
document.getElementById("mainBox").setAttribute("style", "margin-left: 8.5%");
// 取消这个father的居中
document.getElementsByClassName("main_father")[0].setAttribute("style", "justify-content: start !important");
}
// 让文章居中全宽(这个其实不是mainBox, 是mainBox下面的<main>标签)
var mainBox = document.querySelector('#mainBox>main');
if (mainBox != null) {
if (content == null) {
mainBox.style.float = "none";
mainBox.style.marginLeft = "12.5%";
}
mainBox.style.width = '75%';
// 浮动在最前,要能压住左侧的目录边栏
mainBox.style.zIndex = '1';
mainBox.style.position = 'relative';
// 调整图片比例
$("#content_views img").css("max-width", "65%");
$("#content_views img").css("margin-left", "22.5%");
}
// 将底部的作者栏调小
var bottomBar = document.getElementsByClassName("left-toolbox")[0]
if (bottomBar != null) {
bottomBar.style.height = "10px";
}
// 边栏移到底部去
// document.getElementsByClassName("blog_container_aside")[0].style.display = "contents"
// 删除所有download的链接(仅适用于blog.csdn.net)
var downloads = document.getElementsByClassName("recommend-item-box type_download");
// 反着删才管用
for(var i=downloads.length - 1; i >= 0; i--){
if (downloads[i] != null) {
downloads[i].remove();
}
}
// 删除所有download.csdn.net的链接
setTimeout(function() {
var downloads2 = document.querySelectorAll("div[data-type=download]");
for(i=downloads2.length - 1; i >= 0; i--){
if (downloads2[i] != null) {
downloads2[i].remove();
}
}
var allLinks = document.getElementsByTagName("a");
var downloadReg = RegExp(/download.csdn.net/);
for (i = allLinks.length - 1; i >= 0; i--) {
const link = allLinks[i].href;
if (link.match(downloadReg)) {
// 为了判断是不是导航栏的下载按钮,如果删了会导致导航栏错位,很蠢
if (allLinks[i].parentElement.title != "获取源码、文档、学习资源") {
allLinks[i].remove();
}
//allLinks[i].remove();
}
}
}, 1000);
// 删除学生认证
// 每1秒检测一次,持续检测10次,有时候网速问题加载会延时
var studentTime = 0;
var student = setInterval(deleteStudent, 1000);
function deleteStudent() {
var highschool = document.getElementById("csdn-highschool-window");
if (highschool != null) {
highschool.remove();
clearInterval(student);
}
if (studentTime == 10) {
clearInterval(student);
}
studentTime++;
}
// 针对blink.csdn.net页面调整
// 调整版面
$(".blink-main-l").css("width", "70%");
$(".blink-main-l").css("margin-left", "15%");
$(".blink-main-l").css("margin-right", "0");
// 移除右边的个人栏
$(".blink-main-r").remove();
// 针对bbs.csdn.net页面调整
$(".user-right-floor").remove();
$(".detail-container").css("margin-left", "15%");
window.onload = function () {
// 目录高度限制放大一点
document.getElementsByClassName("groupfile-div")[0].setAttribute("style", "max-height: 500px");
// 删除顶栏广告
var adTime = 10;
var adBar = setInterval(removeAdBar, 1000);
function removeAdBar() {
var adBar = document.getElementsByClassName("toolbar-advert")[0];
if (adBar != null) {
adBar.remove();
clearInterval(adBar);
}
if (time == 10) {
clearInterval(adBar);
}
time++;
}
// 删除其他广告(针对CSDN主页)
$("[id^=kp_box]").remove();
$("[class*=advert-box]").remove(); // 会导致顶栏错位
// 删除学生认证
var highschool = document.getElementById("csdn-highschool-window");
if (highschool != null) {
highschool.remove();
}
// 删除右下角的圆形广告
var toolbar = document.getElementsByClassName("csdn-side-toolbar")[0];
if (toolbar != null) {
toolbar.remove();
}
var logo_ad = document.getElementsByClassName("csdn-common-logo-advert")[0];
if (logo_ad != null) {
logo_ad.remove();
}
// 删除Logo
var logo = document.getElementsByClassName("toolbar-logo")[0];
if (logo != null) {
logo.remove();
}
// 删除创作按钮的广告
// 选中按钮下面的a标签
var writeButtonImage = document.querySelector('.toolbar-btn-write a');
if (writeButtonImage != null) {
// 删掉“has-image”的class
writeButtonImage.className = "";
// 添加文字
writeButtonImage.innerText = "创作"
}
// 顶部左侧按钮的 height=100% 会错位,移除这个属性就好了
var tool_bar = document.getElementsByClassName("toolbar-menus")[0];
if (tool_bar != null) {
tool_bar.style.height = "auto";
}
// 删除vip弹窗广告
var vip = $(".mask")[0]
if (vip != null) {
vip.remove();
}
// 删除红包雨
// 每0.5秒检测一次,持续检测4次,有时候网速问题加载会延时
var redTime = 0;
var redPocket = setInterval(deleteRedPocket, 500);
function deleteRedPocket() {
var redPocketLayer = document.getElementById("csdn-redpack");
if (redPocketLayer != null) {
redPocketLayer.remove();
clearInterval(redPocket);
}
if (redTime == 4) {
clearInterval(redPocket);
}
redTime++;
}
// 删除会员组合券广告弹窗
var buysideTime = 0;
var buyside = setInterval(deleteBuyside, 500);
function deleteBuyside() {
var buysideLayer = document.getElementByClassName("csdn-buyside-entry-box")[0];
if (buysideLayer != null) {
buysideLayer.remove();
clearInterval(buyside);
}
if (redTime == 4) {
clearInterval(buyside);
}
buysideTime++;
}
// 删除登录弹窗
// 每1秒检测一次,持续检测10次,有时候网速问题加载会延时
var time = 0;
var login = setInterval(deleteLogin, 1000);
function deleteLogin() {
var loginWindow = document.getElementsByClassName('passport-login-container')[0];
if (loginWindow != null) {
loginWindow.remove();
clearInterval(login);
}
if (time == 10) {
clearInterval(login);
}
time++;
}
// 免登录复制
$(".hljs-button").removeClass("signin");
$(".hljs-button").attr("data-title", "免登录复制");
$(".hljs-button").attr(
"onclick",
"hljs.copyCode(event);setTimeout(function(){$('.hljs-button').attr('data-title', '免登录复制');},3500);"
);
// 去除剪贴板劫持
$("code").attr("onclick", "mdcp.copyCode(event)");
try {
Object.defineProperty(window, "articleType", {
value: 0,
writable: false,
configurable: false,
});
csdn.copyright.init("", "", "");
} catch (err) {}
};
})();