百度文库拷贝破解

解除百度文库复制限制

  1. // ==UserScript==
  2. // @name 百度文库拷贝破解
  3. // @namespace http://tampermonkey.net/
  4. // @homepage https://www.wangxingyang.com/baiduwenku.html
  5. // @version 0.2
  6. // @description 解除百度文库复制限制
  7. // @author freefitter
  8. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAABpElEQVR4nO3Vv2uUQRDG8c/ebSMWqay0trATAxrUSi1S2AiWFoJYpNCgoBjURsHWJKeNRfAvsDgFixQqKdPZ2ViEiCJYBOQu8f1hEXO59713j7MUfLZ6d2a/O8vMO0OzDnin9Ku2Mjvuaw07xgSAYEVXe2indMhj92zpKJLnBhF8MDeye9hn6zbN70eRiqCw02Bra3up8BBLu1FEBxsBucXqW4csz0ULe4jorSCMuPU89boRELDMHiI6Y8V65bbCUTccc70RkaOwKLOg0IkyXa9qTjOu2LAs6NZuD86hrdTyxRNTkUqqdhXlHrngGRVEZsMpJwex9DxIZSHYclesIb65LCoHgIs66UJq6btDBZHZrPh8V6YBOX66LbOkTGckBYimBW2FVTNeuOZNyrFJ236Yl4NSy5SbVm1PDvhodqgyMledTdRlAtDzqfL9tfkwUtyaRkv9LwFj9B/w7wPycXOhqlJ0yZHKPChMi5MCiM47XhsopbVJAUHfrYbmN/EToN+02eLPfz9OYyZhFJzW1Jn3lTsxaKQjCkp52jy45r1ZvSbTb9M0d4PBozGZAAAAAElFTkSuQmCC
  9. // @include *://wenku.baidu.com/*
  10. // @run-at document-end
  11. // @grant GM_xmlhttpRequest
  12. // @grant GM_setValue
  13. // @grant GM_getValue
  14. // @grant GM_listValues
  15. // @grant GM_deleteValue
  16. // @grant unsafeWindow
  17. // @license AGPL License
  18. // @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js
  19. // ==/UserScript==
  20. (function() {
  21. 'use strict';
  22. var url = window.location.href;
  23. var host = window.location.host;
  24. console.log(url);
  25. if((url.indexOf("wenku.baidu.com/view")==-1 && url.indexOf("wenku.baidu.com/link")==-1) || host!="wenku.baidu.com"){
  26. return;
  27. }
  28. var allContent = "";
  29. var $ = $ || window.$; //获得jquery的$标识符
  30. var pageNum = 0,loadPageNum =0 ,docid = "";
  31. // 添加相关按钮
  32. var copyBtn = "<div style='position:fixed;z-index:999;background-color:#ccc;cursor:pointer;top:120px;left:0px;'>"+
  33. "<div id='copyBtn' style='font-size:12px;padding:8px 2px;color:#FFF;background-color:#FE8A23;'>复制</div>"+
  34. "</div>";
  35. $("body").append(copyBtn);
  36.  
  37. function getCopyData(indexpagedata){
  38. //debugger;
  39. allContent = "";
  40. if(null == indexpagedata || undefined == indexpagedata || "" == indexpagedata)
  41. {
  42. console.log("页面数据没取到啊");
  43. return;
  44. }else{
  45. //解析出文章路径
  46. if(!indexpagedata.hasOwnProperty("readerInfo")){
  47. console.log("这个文章还不能解析.....");
  48. return;
  49. }
  50. var htmlUrls= indexpagedata.readerInfo.htmlUrls;
  51. if(!htmlUrls.hasOwnProperty("json")){
  52. console.log("PPT 解析成图片.....");
  53. for(let i in htmlUrls){
  54. allContent += "<img src='" + htmlUrls[i] + "'/>";
  55. }
  56. }else{
  57. //console.log(GM_listValues())
  58. var pageinfos = htmlUrls.json;
  59. var pnginfos = htmlUrls.png;
  60. // 总页数
  61. pageNum = indexpagedata.readerInfo.page;
  62. docid = indexpagedata.readerInfo.docId;
  63. // 返回的数据页数
  64. loadPageNum = pageinfos.length;
  65. for(var ii in pageinfos){
  66. let pageLoadUrl = pageinfos[ii].pageLoadUrl;
  67. GM_xmlhttpRequest({
  68. url: pageLoadUrl,
  69. method: 'GET',
  70. onload: obj => {
  71. let data=obj.response;
  72. //console.log(data)
  73. // 1、将数据拆分成key和value
  74. let key = data.substr(0,data.indexOf("("));
  75. let val = data.substr(data.indexOf("(")+1,data.lastIndexOf(")")-data.indexOf("(")-1);
  76. // 2、解析文章数据
  77. let retJson = JSON.parse(val);
  78. let articleInfos = retJson.body;
  79. let content = "";
  80. //console.log(articleInfos);
  81. // 组成完整的章节文章
  82. var lineY = 0;
  83. for(let i in articleInfos){
  84. if("word" == articleInfos[i].t){
  85. // 增加换行
  86. let y = articleInfos[i].p.y
  87. if(lineY == 0){
  88. content += articleInfos[i].c
  89. lineY = y;
  90. }else if(y == lineY){
  91. content += articleInfos[i].c
  92. }else{
  93. if("" != articleInfos[i].c.trim()){
  94. content += "<br/>" + articleInfos[i].c;
  95. }else{
  96. if(" " == articleInfos[i].c){
  97. content += "<br/>" + articleInfos[i].c;
  98. }else{
  99. console.log("未处理的字符:["+ articleInfos[i].c +"]");
  100. }
  101. }
  102. lineY = y;
  103. }
  104. }else if("pic" == articleInfos[i].t){
  105. //style="position: absolute;clip: rect(0px,250px,200px,50px);width: 300px;height: 200px">
  106. if(null == articleInfos[i].s || "" == articleInfos[i].s || undefined ==articleInfos[i].s){
  107. //content += "=****pic"+ i +"*****=";
  108. // 文章中包含图片,不处理
  109. content += "";
  110. }else{
  111. content = "PIC"
  112. }
  113. //content += '<img src="' + pnginfos[0].pageLoadUrl + '" style="position: absolute;clip: rect('+ articleInfos[i].c.ix +'px,'+ articleInfos[i].c.iy +'px,'+ articleInfos[i].c.iw +'px,'+ articleInfos[i].c.ih +'px);"/>'
  114. }
  115. }
  116. GM_setValue(docid+key, content);
  117. },onerror: err => {
  118. console.log(err)
  119. }
  120. });/**/
  121.  
  122. }
  123. // 按序输出结果
  124. for(let j=1; j<= loadPageNum ;j++){
  125. let tmp = GM_getValue(docid+"wenku_"+j,"");
  126. if(tmp == "PIC"){
  127. //allContent = allContent.replace("=****pic"+ (j - 1 )+"*****=","<img src='" + pnginfos[j-1].pageLoadUrl + "'/>");
  128. allContent += "<img src='" + pnginfos[j-1].pageLoadUrl + "'/>";
  129. }else{
  130. allContent += tmp;
  131. }
  132. // 移除相关Key
  133. GM_deleteValue(docid+"wenku_"+j);
  134. }
  135. //console.log(GM_listValues())
  136. }
  137. }
  138. }
  139.  
  140. // 点击拷贝
  141. $("body").on("click","#copyBtn",function(){
  142. let indexpagedata = unsafeWindow.pageData;
  143. getCopyData(indexpagedata);
  144. let ua = navigator.userAgent;
  145. let opacity = '0.95';
  146. if (ua.indexOf("Edge") >= 0) {
  147. opacity = '0.6';
  148. } else{
  149. opacity = '0.95';
  150. }
  151. let str = "";
  152. if(loadPageNum != pageNum){
  153. str = "当前加载了[" + loadPageNum +"]页,总共[" + pageNum + "]页,登录(不可用)会加载更多页。"
  154. }
  155. let copyTextBox = '<div id="copy_text_box" style="width:100%;height:100%;position: fixed;z-index: 99;display: block;top: 0px;left: 0px;background:rgba(255,255,255,' + opacity + ');-webkit-backdrop-filter: blur(20px);display: flex;justify-content:center;align-items:center;">'+
  156. '<div id="copy_box_close" style="width:100%;height:100%;position:fixed;top:0px;left:0px;"><div style="font-size:16px;margin-top:20px;text-align:center;"><b>点击文本外关闭弹框</b><div><b style="color:red">' + str +'</b></div></div></div>'+
  157. '<pre id="copy_text_content" style="padding:20px;border:1px solid #CCC;border-radius:4px;width:60%;font-size:16px;line-height:22px;z-index:10000;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;word-break:break-all;max-height:70%;overflow:auto;"></pre>'+
  158. '</div>"';
  159. $('#copy_text_box').remove();
  160. if("" == allContent){
  161. allContent = "未获取成功,请再次点击复制按钮!"
  162. }
  163. $('body').append(copyTextBox);
  164. $('#copy_text_content').html(allContent);
  165. $('#copy_box_close').click(function() {
  166. $('#copy_text_box').remove();
  167. });
  168.  
  169. });
  170.  
  171. })();

QingJ © 2025

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