反CSDN

用于CSDN,无需关注即可阅读,文章转PDF打印,不登录复制禁止登录弹窗

  1. // ==UserScript==
  2. // @name 反CSDN
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3.2
  5. // @description 用于CSDN,无需关注即可阅读,文章转PDF打印,不登录复制禁止登录弹窗
  6. // @author Li Sipeng
  7. // @match https://blog.csdn.net/*
  8. // @grant none
  9. // @license none
  10. // ==/UserScript==
  11.  
  12. (
  13. function() {
  14. 'use strict';
  15. /* 1、不关注即可阅读 */
  16. let btnNode = document.querySelector("#mainBox > main > div.hide-article-box.hide-article-pos.text-center");
  17. function hideConcerns(){
  18. document.querySelector('#article_content').style.height='auto';
  19. document.querySelector("#mainBox > main > div.hide-article-box.hide-article-pos.text-center").style.display='none';
  20. }
  21. if(btnNode!=null){
  22. console.log("1、反CSDN,你我有责");
  23. btnNode.innerHTML = "<p class='btn'>不关注也可以阅读哦>>></p>";
  24. btnNode.style = " color: red;font-size: 25px;"
  25. btnNode.addEventListener('click',hideConcerns)
  26. }
  27.  
  28. /* 2、打印功能 */
  29. let ulNode = document.querySelector("#toolBarBox > div > div.toolbox-middle > ul");
  30. if(ulNode != null){
  31. let span = document.createElement("span");
  32. span.style.color="red";
  33. span.style.fontWeight="900";
  34. span.style.cursor = "pointer";
  35. span.innerHTML="打印";
  36. ulNode.appendChild(span);
  37. span.addEventListener('click',()=>{
  38. console.log("2、反CSDN,你我有责");
  39. alert("建议打印之前先进入设置将浏览器字体适当调大(推荐:字号22,最小字号18)\r点击确定后按ctrl+p进行打印");
  40. if(btnNode!=null) hideConcerns();
  41. /*从被选元素body移除一个类页面样式*/
  42. $("body").removeClass("nodata");
  43. /*删除顶部导航*/
  44. $("#csdn-toolbar").remove();
  45. /*删除左侧导航*/
  46. $("aside").remove();
  47. /*删除右侧悬浮*/
  48. $(".csdn-side-toolbar").remove();
  49. /*删除CSDN文章上方*/
  50. $(".article-header-box .article-info-box").remove();
  51. $("#blogColumnPayAdvert").remove();
  52. /*展开CSDN文章中被隐藏的代码段:从被选元素pre class="set-code-hide prettyprint"移除一个类页面样式*/
  53. $('pre[class="set-code-hide prettyprint"]').removeClass("set-code-hide");
  54. /*删除CSDN文章中被隐藏的代码段上面的遮罩*/
  55. $('div[class="hide-preCode-box"]').remove();
  56. /*删除CSDN文章下方*/
  57. $(".more-toolbox-new").remove();
  58. $(".reward-box-new").remove();
  59. $(".recommend-tit-mod").remove();
  60. $(".blog-footer-bottom").remove();
  61. /*删除CSDN文章下方评论、其他博客链接*/
  62. $(".comment-box, .recommend-box, #csdn-shop-window, .template-box").remove();
  63. /*删除CSDN文章下方公众号链接、笑脸评级*/
  64. $("#blogExtensionBox, #recommendNps").remove();
  65. /*修改CSDN文章css样式为》默认样式'display':'contents'或自定义宽度'width':'1100px'或自定义宽度'width':'825px'*/
  66. $("main").css({'width':'900px'});
  67. /*弹出打印窗口》另存为PDF文件*/
  68. window.print();
  69. })
  70. }
  71.  
  72. /* 3、不登录复制,禁止所有登录弹窗 */
  73. let isLogin = document.querySelector(".hasAvatar");
  74. let isCode = document.querySelectorAll("code");
  75. if(isLogin === null && isCode != null){
  76. console.log("3、反CSDN,你我有责")
  77. let WinObj = parent || window;
  78. let styleTag ="<style>.passport-login-container{display:none;}</style>"
  79. let html = WinObj.document.head.innerHTML;
  80. WinObj.document.head.innerHTML = html + styleTag; //给当前页面添加css样式,不让弹窗
  81. for(let item of isCode){
  82. item.style.userSelect = "text"; //允许扩选复制
  83. item.lastChild.dataset.title = "我不登录也要扩选复制"; //改变提示文字
  84. let copyBtn = document.querySelector(".hljs-button");
  85. copyBtn.addEventListener("click",()=>{
  86. console.log(copyBtn.parentNode.innerText);
  87. var url=copyBtn.parentNode.innerText;
  88. var input = document.createElement('input');
  89. document.body.appendChild(input);
  90. input.setAttribute('value', url);
  91. input.select();
  92. document.execCommand("copy"); // 执行浏览器复制命令
  93. document.body.removeChild(input);
  94. item.lastChild.dataset.title = "复制成功!"; //改变提示文字
  95. });
  96. }
  97.  
  98. }
  99.  
  100.  
  101.  
  102. })();