Studocu Hack

Unblur and download Studocu Premium Documents.

目前为 2022-12-08 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Studocu Hack
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @license MIT
  6. // @description Unblur and download Studocu Premium Documents.
  7. // @author You
  8. // @match https://www.studocu.com/*
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=studocu.com
  10. // @grant GM_addStyle
  11. // @run-at document-start
  12. // ==/UserScript==
  13. GM_addStyle ( `
  14. .nofilter{
  15. filter: none !important;
  16. }
  17. .download-button-1, .download-button-2, .github-button{
  18. background: transparent;
  19. border-radius: 3px;
  20. color: #fff;
  21. display: inline-block;
  22. line-height: 1;
  23. vertical-align: middle;
  24. transition: background-color .3s,border-color .3s,color .3s;
  25. }
  26.  
  27. .download-button-1{
  28. background: #5bc787;
  29. margin: 0 5px;
  30. padding: 4px 15px;
  31. }
  32.  
  33. .download-button-2{
  34. height: 30px;
  35. margin: 0 5px;
  36. min-width: 30px;
  37. }
  38.  
  39. .github-button{
  40. background: #333;
  41. border: 1px solid #333;
  42. display: block;
  43. line-height: 1.4286;
  44. margin-right: 20px;
  45. padding: 8px 16px;
  46. }
  47.  
  48.  
  49. .tooltip-bottom {
  50. position: relative;
  51. display: inline-block;
  52. border-bottom: 1px dotted black;
  53. }
  54.  
  55. .tooltip-bottom .tooltiptext-bottom {
  56. visibility: hidden;
  57. width: 200px;
  58. background-color: #555;
  59. color: #fff;
  60. text-align: center;
  61. border-radius: 6px;
  62. padding: 5px 0;
  63. position: absolute;
  64. z-index: 1;
  65. top: 120%;
  66. left: 50%;
  67. margin-left: -100px;
  68. opacity: 0;
  69. transition: opacity 0.3s;
  70. }
  71.  
  72. .tooltip-bottom .tooltiptext-bottom::after {
  73. content: "";
  74. position: absolute;
  75. bottom: 100%;
  76. left: 50%;
  77. margin-left: -5px;
  78. border-width: 5px;
  79. border-style: solid;
  80. border-color: transparent transparent #555 transparent;
  81. }
  82.  
  83. .tooltip-bottom:hover .tooltiptext-bottom {
  84. visibility: visible;
  85. opacity: 1;
  86. }
  87.  
  88. ` );
  89. (function() {
  90. 'use strict';
  91. window.addEventListener('load', function(){
  92. var banner = document.getElementById('document-wrapper')
  93. if(banner != null){
  94. var banners = banner.childNodes;
  95. if (banners.length>3){
  96. banners[0].parentNode.removeChild(banners[0]);
  97. }
  98. }
  99. try{
  100. var premiumButton = document.getElementById('header-position-handle').childNodes[0].childNodes[1].childNodes[0].childNodes[1];
  101. premiumButton.parentNode.removeChild(premiumButton);
  102. }catch{console.log('Was not able to remove premiumButton!');}
  103.  
  104.  
  105. /* Mobile */
  106. if (window.innerWidth <= 990){
  107. var pages = document.getElementById('page-container').childNodes;
  108. let i=0;
  109. if(pages != null){
  110. for(i=0; i<pages.length; i++) {
  111. if(pages[i].id == ''){
  112. pages[i].parentNode.removeChild(pages[i]);
  113. }
  114. }
  115. }
  116. }
  117. try{
  118. var recomendations = document.getElementById('viewer-recommendations');
  119. if(recomendations != null){
  120. recomendations.parentNode.parentNode.removeChild(recomendations.parentNode);
  121. }
  122. }catch(err){
  123. console.log(err);
  124. }
  125. var pagess = document.getElementsByClassName('page-content');
  126. let i = 0;
  127. let j =0;;
  128. for(i=0; i<pagess.length; i++){
  129. var pagecontent=pagess[i].parentNode.childNodes;
  130. for(j=0; j<pagecontent.length; j++){
  131. if(pagecontent[j].className != "page-content"){
  132. pagecontent[j].parentNode.removeChild(pagecontent[j]);
  133. }
  134. }
  135. pagess[i].classList.add("nofilter");
  136. }
  137. const prev_buttons = document.getElementsByClassName("fa-cloud-arrow-down");
  138. if(prev_buttons.length > 0) {
  139. var button1 = document.createElement("button");
  140. button1.classList.add("download-button-1");
  141. button1.setAttribute("id","download-button-1");
  142. button1.innerHTML = '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="fa-cloud-arrow-down" class="svg-inline--fa fa-cloud-arrow-down " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"></path></svg><span style="margin-left: 5px">Download</span>';
  143.  
  144. var button2 = document.createElement("button");
  145. button2.classList.add("download-button-2");
  146. button2.setAttribute("id","download-button-2");
  147. button2.innerHTML = '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="fa-cloud-arrow-down" class="svg-inline--fa fa-cloud-arrow-down " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"></path></svg><span style="margin-left: 5px">Download</span>';
  148.  
  149. try{
  150. prev_buttons[0].parentNode.parentNode.prepend(button1);
  151. prev_buttons[1].parentNode.parentNode.removeChild(prev_buttons[1].parentNode);
  152. }catch(err){
  153. console.log(err);
  154. }
  155. try{
  156. prev_buttons[5].parentNode.parentNode.prepend(button2);
  157. prev_buttons[5].parentNode.parentNode.removeChild(prev_buttons[5].parentNode);
  158. }catch(err){
  159. console.log(err);
  160. }
  161.  
  162.  
  163. function downloadDoc(){
  164. var head = document.getElementsByTagName("head")[0].innerHTML;
  165. var tit = document.getElementsByTagName("h1")[0].innerHTML;
  166. var pages = document.getElementById('page-container').childNodes;
  167.  
  168. for(i=0; i<pages.length; i++){
  169. pages[i].childNodes[0].style = "display: block;";
  170. }
  171.  
  172. var pdf = pages[0].parentNode.parentNode.parentNode.innerHTML;
  173.  
  174. var newWindow = window.open("", "Document", "height=865,width=625,status=yes,toolbar=no,menubar=no");
  175. newWindow.document.getElementsByTagName("head")[0].innerHTML = head + "<style> .nofilter{filter: none !important;} </style>" + "<style> @media print {@page {size: A5;}}</style>";
  176. newWindow.document.title = tit;
  177. newWindow.document.getElementsByTagName("body")[0].innerHTML = pdf;
  178. newWindow.document.getElementsByTagName("body")[0].childNodes[0].style = "transform: scale(1); width: 100%; height: 100%;";
  179.  
  180. }
  181.  
  182. button1.onclick = function() {downloadDoc()};
  183. button2.onclick = function() {downloadDoc()};
  184. }
  185. });
  186. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址