// ==UserScript== // @name 百度文库拷贝破解 // @namespace http://tampermonkey.net/ // @homepage https://www.wangxingyang.com/baiduwenku.html // @version 0.2 // @description 解除百度文库复制限制 // @author freefitter // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAABpElEQVR4nO3Vv2uUQRDG8c/ebSMWqay0trATAxrUSi1S2AiWFoJYpNCgoBjURsHWJKeNRfAvsDgFixQqKdPZ2ViEiCJYBOQu8f1hEXO59713j7MUfLZ6d2a/O8vMO0OzDnin9Ku2Mjvuaw07xgSAYEVXe2indMhj92zpKJLnBhF8MDeye9hn6zbN70eRiqCw02Bra3up8BBLu1FEBxsBucXqW4csz0ULe4jorSCMuPU89boRELDMHiI6Y8V65bbCUTccc70RkaOwKLOg0IkyXa9qTjOu2LAs6NZuD86hrdTyxRNTkUqqdhXlHrngGRVEZsMpJwex9DxIZSHYclesIb65LCoHgIs66UJq6btDBZHZrPh8V6YBOX66LbOkTGckBYimBW2FVTNeuOZNyrFJ236Yl4NSy5SbVm1PDvhodqgyMledTdRlAtDzqfL9tfkwUtyaRkv9LwFj9B/w7wPycXOhqlJ0yZHKPChMi5MCiM47XhsopbVJAUHfrYbmN/EToN+02eLPfz9OYyZhFJzW1Jn3lTsxaKQjCkp52jy45r1ZvSbTb9M0d4PBozGZAAAAAElFTkSuQmCC // @include *://wenku.baidu.com/* // @run-at document-end // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_listValues // @grant GM_deleteValue // @grant unsafeWindow // @license AGPL License // @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js // @downloadURL https://update.greasyfork.icu/scripts/440057/%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%E6%8B%B7%E8%B4%9D%E7%A0%B4%E8%A7%A3.user.js // @updateURL https://update.greasyfork.icu/scripts/440057/%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%E6%8B%B7%E8%B4%9D%E7%A0%B4%E8%A7%A3.meta.js // ==/UserScript== (function() { 'use strict'; var url = window.location.href; var host = window.location.host; console.log(url); if((url.indexOf("wenku.baidu.com/view")==-1 && url.indexOf("wenku.baidu.com/link")==-1) || host!="wenku.baidu.com"){ return; } var allContent = ""; var $ = $ || window.$; //获得jquery的$标识符 var pageNum = 0,loadPageNum =0 ,docid = ""; // 添加相关按钮 var copyBtn = "
"+ "
复制
"+ "
"; $("body").append(copyBtn); function getCopyData(indexpagedata){ //debugger; allContent = ""; if(null == indexpagedata || undefined == indexpagedata || "" == indexpagedata) { console.log("页面数据没取到啊"); return; }else{ //解析出文章路径 if(!indexpagedata.hasOwnProperty("readerInfo")){ console.log("这个文章还不能解析....."); return; } var htmlUrls= indexpagedata.readerInfo.htmlUrls; if(!htmlUrls.hasOwnProperty("json")){ console.log("PPT 解析成图片....."); for(let i in htmlUrls){ allContent += ""; } }else{ //console.log(GM_listValues()) var pageinfos = htmlUrls.json; var pnginfos = htmlUrls.png; // 总页数 pageNum = indexpagedata.readerInfo.page; docid = indexpagedata.readerInfo.docId; // 返回的数据页数 loadPageNum = pageinfos.length; for(var ii in pageinfos){ let pageLoadUrl = pageinfos[ii].pageLoadUrl; GM_xmlhttpRequest({ url: pageLoadUrl, method: 'GET', onload: obj => { let data=obj.response; //console.log(data) // 1、将数据拆分成key和value let key = data.substr(0,data.indexOf("(")); let val = data.substr(data.indexOf("(")+1,data.lastIndexOf(")")-data.indexOf("(")-1); // 2、解析文章数据 let retJson = JSON.parse(val); let articleInfos = retJson.body; let content = ""; //console.log(articleInfos); // 组成完整的章节文章 var lineY = 0; for(let i in articleInfos){ if("word" == articleInfos[i].t){ // 增加换行 let y = articleInfos[i].p.y if(lineY == 0){ content += articleInfos[i].c lineY = y; }else if(y == lineY){ content += articleInfos[i].c }else{ if("" != articleInfos[i].c.trim()){ content += "
" + articleInfos[i].c; }else{ if(" " == articleInfos[i].c){ content += "
" + articleInfos[i].c; }else{ console.log("未处理的字符:["+ articleInfos[i].c +"]"); } } lineY = y; } }else if("pic" == articleInfos[i].t){ //style="position: absolute;clip: rect(0px,250px,200px,50px);width: 300px;height: 200px"> if(null == articleInfos[i].s || "" == articleInfos[i].s || undefined ==articleInfos[i].s){ //content += "=****pic"+ i +"*****="; // 文章中包含图片,不处理 content += ""; }else{ content = "PIC" } //content += '' } } GM_setValue(docid+key, content); },onerror: err => { console.log(err) } });/**/ } // 按序输出结果 for(let j=1; j<= loadPageNum ;j++){ let tmp = GM_getValue(docid+"wenku_"+j,""); if(tmp == "PIC"){ //allContent = allContent.replace("=****pic"+ (j - 1 )+"*****=",""); allContent += ""; }else{ allContent += tmp; } // 移除相关Key GM_deleteValue(docid+"wenku_"+j); } //console.log(GM_listValues()) } } } // 点击拷贝 $("body").on("click","#copyBtn",function(){ let indexpagedata = unsafeWindow.pageData; getCopyData(indexpagedata); let ua = navigator.userAgent; let opacity = '0.95'; if (ua.indexOf("Edge") >= 0) { opacity = '0.6'; } else{ opacity = '0.95'; } let str = ""; if(loadPageNum != pageNum){ str = "当前加载了[" + loadPageNum +"]页,总共[" + pageNum + "]页,登录会加载更多页。" } let copyTextBox = '
'+ '
点击文本外关闭弹框
' + str +'
'+ '
'+
            '
"'; $('#copy_text_box').remove(); if("" == allContent){ allContent = "未获取成功,请再次点击复制按钮!" } $('body').append(copyTextBox); $('#copy_text_content').html(allContent); $('#copy_box_close').click(function() { $('#copy_text_box').remove(); }); }); })();