NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name 百度文库破解加强、全网VIP视频破解,去广告,免费在线看、全网音乐直接下载、短视频去水印下载:支持抖音、快手等,知乎使用增强、CSDN使用增强等多功能脚本 // @namespace congcongguoke_baiduwenku_script // @version 2.1.7 // @description 【自用长期维护更新,无需关注公众号】功能有:1:百度文库文档免费下载、内容自由复制、广告过滤;2:视频VIP破解去广告(支持自定义接口),简单好用,支持爱奇艺、腾讯、优酷、哔哩哔哩等;3:短视频去水印下载(非调用第三方,无限制下载)支持:抖音、快手;4:知乎使用增强:外链接直接跳出、内容自动展开、短视频下载等;5:CSDN阅读加强:CSDN自动展开、去广告、净化剪贴板、免登陆等;6:全网音乐和有声音频免客户端下载,支持网易云音乐、QQ音乐、酷狗、喜马拉雅等;7:优惠券查询 // @author 匆匆过客、gorgiaxx、王超 // @include *://wenku.baidu.com/* // @include *music.163.com/* // @include *://y.qq.com/n/yqq/song/* // @include *://www.kugou.com/song/* // @include *://www.xiami.com/song/* // @include *://*.ximalaya.com/* // @include *://*.kugou.com/* // @include *://*.xiami.com/* // @include *://www.iesdouyin.com/share/video/* // @include *://*.zhihu.com/* // @include *://v.vzuu.com/video/* // @include *://video.zhihu.com/video/* // @include *://blog.csdn.net/*/article/details/* // @include *://*.blog.csdn.net/article/details/* // @include *://bbs.csdn.net/* // @include *://www.csdn.net/* // @include *://*.iteye.com/blog/* // @include *://*.youku.com/v_* // @include *://*.iqiyi.com/v_* // @include *://*.iqiyi.com/w_* // @include *://*.iqiyi.com/a_* // @include *://*.le.com/ptv/vplay/* // @include *://v.qq.com/x/cover/* // @include *://v.qq.com/x/page/* // @include *://*.tudou.com/listplay/* // @include *://*.tudou.com/albumplay/* // @include *://*.tudou.com/programs/view/* // @include *://*.mgtv.com/b/* // @include *://film.sohu.com/album/* // @include *://tv.sohu.com/v/* // @include *://*.acfun.cn/v/* // @include *://*.bilibili.com/video/* // @include *://*.bilibili.com/anime/* // @include *://*.bilibili.com/bangumi/play/* // @include *://*.baofeng.com/play/* // @include *://vip.pptv.com/show/* // @include *://v.pptv.com/show/* // @include *://item.taobao.com/* // @include *://*detail.tmall.com/* // @include *://*detail.tmall.hk/* // @include *://*product.suning.com/* // @include *://*item.jd.com/* // @include *://*detail.vip.com/* // @include *://*mobile.yangkeduo.com/goods* // @include *://video.kuaishou.com/*/* // @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js // @connect kuaishou.com // @connect ixigua.com // @connect zhihu.com // @connect vzuu.com // @connect douyinvod.com // @connect aweme.snssdk.com // @connect iesdouyin.com // @connect www.whatbuytoday.com // @connect cdn.jsdelivr.net // @grant GM_info // @grant GM_download // @grant GM_openInTab // @grant GM_getValue // @grant GM_setValue // @grant GM_download // @grant GM_xmlhttpRequest // @run-at document-idle // @charset UTF-8 // @license MIT // ==/UserScript== (function() { 'use strict'; /////*********************** //true:开启 false:关闭,想关闭某个模块只需把对应的值改为false即可 var isOpenWenkuModule = true; //是否开启文库功能模块 var iSOpenDouyinModule = true; //是否开启抖音功能模块 var iSOpenKuaishouModule = true; //是否开启快手功能模块 var isOpenVideoVipModule = true; //是否开启视频解析模块 var isOpenMusicVipModule = true; //是否开启音乐解析模块 var isOpenGoodsCouponModule = true;//是否开启优惠券模块 var isOpenZhihuModule = true; //是否开启知乎优化模块 var isOpenCsdnModule = true; //是否开启CSDN优化模块 /////*********************** var $ = $ || window.$; var window_url = window.location.href; var website_host = window.location.host; //自定义视频解析接口 var customizeMovieInterface=[ //{"name":"自定义接口","url":"https://xxxx"} ]; //--百度文库开始 var baiduwenkuHelper={}; baiduwenkuHelper.wenkudownloadUrl = "http://www.tool77.com/tampermonkey/doc/download?wenku_url="; baiduwenkuHelper.removeAD=function(){ if(website_host.indexOf("wenku.baidu.com") != -1){ setInterval(function(){ $(".banner-ad").hide(); $(".union-ad-bottom").hide(); $("iframe").hide(); //VIP去广告小按钮 $(".ggbtm-vip-close").hide(); $(".ad-vip-close-bottom").hide(); $(".ad-vip-close").hide(); //搜索页面 $("#fengchaoad").hide(); $(".search-aside-adWrap").hide(); },300); } }; baiduwenkuHelper.generateHtml=function(){ var $that = this; if(window_url.indexOf("wenku.baidu.com/view")==-1 || website_host!="wenku.baidu.com"){ return; } this.openAllPage(); //折叠的文档全部展开 var topBox = "<div style='position:fixed;z-index:999999;background-color:#ccc;cursor:pointer;top:40%;left:0px;'>"+ "<div id='baiduwenku_helper_download_btn' style='font-size:12px;padding:8px 2px;color:#FFF;background-color:#25AE84;'>下载</div>"+ "<div id='baiduwenku_helper_copyall_btn' style='font-size:12px;padding:8px 2px;color:#FFF;background-color:#FE8A23;'>复制</div>"+ "</div>"; $("body").append(topBox); //解析下载 $("body").on("click","#baiduwenku_helper_download_btn",function(){ var wenkuUrl = $that.wenkudownloadUrl+encodeURIComponent(window_url); GM_openInTab(wenkuUrl, { active: true }); }); if($("#reader-container").length == 0){ //这是旧的文档展示页面 var onePageCopyContentHtml = '<div class="baiduwenku_helper_copy_onepage" style="float:left;padding:3px 8px;background:green;z-index:999;position:relative;top:60px;color:#fff;background-color:#FE8A23;font-size:13px;cursor:pointer;">复制此页面内容</div>'; $('.mod.reader-page.complex, .ppt-page-item, .mod.reader-page-mod.complex, .reader-page-wrap').each(function() { $(this).prepend(onePageCopyContentHtml); }); //复制全部文档内容 $("body").on("click","#baiduwenku_helper_copyall_btn",function(){ $that.copybaiduWenkuAll(); }); //复制每一页内容 $("body").on("click",".baiduwenku_helper_copy_onepage",function(){ var $inner = $(this).parent(".mod").find(".inner") $that.copybaiduWenkuOne($inner, true); }); }else{ //新的付费页面 var onePageCopyContentHtml = '<div class="baiduwenku_helper_copy_onepage" style="float:left;padding:3px 8px;background:green;z-index:999;position:relative;top:60px;color:#fff;background-color:#FE8A23;font-size:13px;cursor:pointer;">复制此页面内容</div>'; setInterval(function(){ //添加复制按钮 $('.reader-page').each(function() { if($(this).find(".baiduwenku_helper_copy_onepage").length==0){ $(this).prepend(onePageCopyContentHtml); } }); },200); //复制全部文档内容 $("body").on("click","#baiduwenku_helper_copyall_btn",function(){ $that.copybaiduWenkuAll_VIP(); }); //复制每一页内容 $("body").on("click", ".baiduwenku_helper_copy_onepage", function(){ $that.copybaiduWenkuOne_VIP($(this).parents(".reader-page"), true); }); } }; baiduwenkuHelper.showBaiduCopyContentBox=function(str){ var ua = navigator.userAgent; var opacity = '0.95'; if (ua.indexOf("Edge") >= 0) { opacity = '0.6'; } else{ opacity = '0.95'; } var copyTextBox = '<div id="baiduwenku_helper_copy_text_box" style="width:100%;height:100%;position: fixed;z-index: 9999;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;">'+ '<div id="baiduwenku_helper_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></div>'+ '<pre id="baiduwenku_helper_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>'+ '</div>"'; $('#baiduwenku_helper_copy_text_box').remove(); $('body').append(copyTextBox); $('#baiduwenku_helper_copy_text_content').html(str); $('#baiduwenku_helper_copy_box_close').click(function() { $('#baiduwenku_helper_copy_text_box').remove(); }); }; baiduwenkuHelper.showDialog=function(str){ var dialogHtml = '<div id="baiduwenku_helper_dialog" style="margin:0px auto;opacity:0.8;padding:5px 10px;position:fixed;z-index: 10001;display: block;bottom:30px;left:44%;color:#fff;background-color:#CE480F;font-size:13px;border-radius:3px;">'+str+'</div>'; $('#baiduwenku_helper_dialog').remove(); $('body').append(dialogHtml); setTimeout(function(){ $('#baiduwenku_helper_dialog').remove(); }, 1500); }; baiduwenkuHelper.openAllPage=function(){ var readall = $(".read-all"); if(readall.length!=0){ setTimeout(function(){ readall.click(); },100); }; var bannerMoreBtn = $(".banner-more-btn"); if(bannerMoreBtn.length!=0){ setTimeout(function(){ bannerMoreBtn.click(); },100); } }; /*** 新页面内容提取 ****/ baiduwenkuHelper.copybaiduWenkuAll_VIP=function(){ var contentHtml = ""; var that = this; $(".reader-page").each(function(){ contentHtml += that.copybaiduWenkuOne_VIP($(this), false); }); if(!!contentHtml){ this.showBaiduCopyContentBox(contentHtml); }else{ this.showDialog("提取文档内容失败了"); } }; baiduwenkuHelper.copybaiduWenkuOne_VIP=function($page, isappend){ var $that = this; var contentHtml = ""; //提取文字 var picNum = 0; //图片数目 var picTemplate = "<div style='margin:10px 0px;text-align:center;'><img src='@' width='90%'><div>____图(#)____</div></div>"; //word,xlsx类型的文档 $page.find(".reader-pic-layer,.reader-txt-layer").each(function(){ if($(this).hasClass("reader-pic-layer")){ $(this).find("img").each(function(){ var imageurl = $(this).attr("src"); if(!!imageurl){ picNum++; var imageHtml = picTemplate; imageHtml = imageHtml.replace(/#/g,picNum); imageHtml = imageHtml.replace(/@/g,imageurl); contentHtml += imageHtml; } }); }else{ $(this).find(".reader-word-layer").each(function(){ contentHtml += $(this).text().replace(/\u2002/g, ' '); }); } }); //txt类型的文档 $page.find(".p-txt").each(function(){ contentHtml += $(this).text().replace(/\u2002/g, ' '); }); contentHtml = contentHtml.replace(/。\s/g, '。\r\n'); if(!!contentHtml){ if(isappend){ $that.showBaiduCopyContentBox(contentHtml); } return contentHtml; }else{ if(isappend){ $that.showDialog("提取文档内容失败了"); } return ""; } } /*** 旧页面内容提取 ****/ baiduwenkuHelper.copybaiduWenkuAll=function(){ var contentHtml = ""; var that = this; $(".inner").each(function(){ contentHtml += that.copybaiduWenkuOne($(this), false); }); if(!!contentHtml){ this.showBaiduCopyContentBox(contentHtml); }else{ this.showDialog("提取文档内容失败了"); } }; baiduwenkuHelper.copybaiduWenkuOne=function($inner, isappend){ var $that = this; var str = ""; //提取文字 $inner.find('.reader-word-layer').each(function(){ str += $(this).text().replace(/\u2002/g, ' '); }); $inner.find('.p-txt').each(function(){ str += $(this).text().replace(/\u2002/g, ' '); }); str = str.replace(/。\s/g, '。\r\n'); //提取css中的图片 var picHtml = ""; var picUrlReg = /\(((\'|\")?https.*?)\)/i; var cssUrl = ""; var picNum = 0; var picUrlLengthMin = 65; var picTemplate = "<div style='margin:10px 0px;text-align:center;'><img src='@' width='90%'><div>____图(#)____</div></div>"; $inner.find('.reader-pic-item').each(function(){ cssUrl= $(this).css("background-image"); if(!!cssUrl && (cssUrl.indexOf("https")!=-1 || cssUrl.indexOf("HTTPS")!=-1)){ var array = cssUrl.match(picUrlReg); if(array.length>1){ cssUrl = array[1].replace(/\"/g, ""); if(!!cssUrl && cssUrl.length>picUrlLengthMin){ picNum ++; var onePic = picTemplate; onePic = onePic.replace(/#/g,picNum); onePic = onePic.replace(/@/g,cssUrl); picHtml += onePic; } } } }); var srcUrl = ""; $inner.find('img').each(function(){ srcUrl = $(this).attr("src"); if(!!srcUrl && srcUrl.length>picUrlLengthMin && srcUrl.indexOf("https://wkretype")!=-1){ picNum ++; var onePic = picTemplate; onePic = onePic.replace(/#/g,picNum); onePic = onePic.replace(/@/g,srcUrl); picHtml += onePic; } }); //追加内容 var contentHtml = str+picHtml; if(!!contentHtml && contentHtml.length>0){ if(isappend){ $that.showBaiduCopyContentBox(contentHtml); } return contentHtml; }else{ if(isappend){ $that.showDialog("提取文档内容失败了"); } return ""; } }; baiduwenkuHelper.start=function(){ this.generateHtml(); this.removeAD(); }; if(isOpenWenkuModule){ baiduwenkuHelper.start(); } //音乐下载:无损音乐、封面、歌词 var musicvip={}; musicvip.eleId = Math.ceil(Math.random()*100000000); musicvip.judgeVipWebsite=function(){ var musicurls=[ "music.163.com","y.qq.com","www.kugou.com","www.kuwo.cn","www.xiami.com","music.taihe.com","music.migu.cn","lizhi.fm","qingting.fm","ximalaya.com" ]; for(var i=0; i<musicurls.length;i++){ if(window.location.host.indexOf(musicurls[i])!=-1){ return true; } } return false; }; musicvip.addStyle=function(){ var innnerCss = "#plugin_kiwi_analysis_vip_music_box_"+this.eleId+" {position:fixed; top:290px; left:0px; width:35px; background-color:#BC2405;z-index:9999999899999;}"+ "#plugin_kiwi_analysis_vip_music_box_"+this.eleId+" >.plugin_item{cursor:pointer; width:33px; padding:10px 0px; text-align:center;}"+ "#plugin_kiwi_analysis_vip_music_box_"+this.eleId+" >.plugin_item >img{width:23px; display:inline-block; vertical-align:middle;}"; $("body").prepend("<style>"+innnerCss+"</style>"); }; musicvip.generateHtml=function(){ var html=""; var vipImgBase64 = "data:image/png;base64,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"; html+= "<div id='plugin_kiwi_analysis_vip_music_box_"+this.eleId+"'>"; html+= "<div class='plugin_item jump_analysis_website' title='VIP音乐破解'><img src='"+vipImgBase64+"'></div>"; html+= "</div>"; $("body").append(html); }; musicvip.operation=function(){ var that = this; $("#plugin_kiwi_analysis_vip_music_box_"+this.eleId+"").on("click", function(){ var currentHost = window.location.host; var currentUrl = window.location.href; var playUrl = ""; if(currentUrl.match(/music\.163\./)){ var playUrl=";" if(currentUrl.match(/^https?:\/\/music\.163\.com\/#\/(?:song|dj)\?id/)) { playUrl = 'https://music.liuzhijin.cn/?url='+encodeURIComponent(currentUrl.replace('/#','')); }else if(currentUrl.match(/^https?:\/\/y\.music\.163\.com\/m\/(?:song|dj)\?id/)) { playUrl = 'https://music.liuzhijin.cn/?url='+encodeURIComponent('https://music.163.com/song?id='+getQueryString('id')); } }else if(currentUrl.match(/y\.qq\.com/)){ var qqSong = currentUrl.match(/\/n\/yqq\/song\/(\S*).html/); var playUrl = 'https://music.liuzhijin.cn/?id='+qqSong[1]+'&type=qq'; } else if(currentUrl.match(/kugou\.com/)){ var kgSong = currentUrl.match(/hash=(\S*)&album/); var playUrl = 'https://music.liuzhijin.cn/?id='+kgSong[1]+'&type=kugou'; }else if(currentUrl.match(/kuwo\.cn/)){ var kwSong = currentUrl.match(/play_detail\/(\S*)/); var playUrl = 'https://music.liuzhijin.cn/?id='+kwSong[1]+'&type=kuwo'; }else if(currentUrl.match(/www\.xiami\.com/)){ var xmSong = currentUrl.match(/song\/(\S*)/); var playUrl = 'https://music.liuzhijin.cn/?id='+xmSong[1]+'&type=xiami'; }else if(currentUrl.match(/www\.ximalaya\.com/)){ var xmlyUrlArr = currentUrl.split("/"); for(var xuaIndex =0;xuaIndex<xmlyUrlArr.length;xuaIndex++){ if(xuaIndex==xmlyUrlArr.length-1){ playUrl = 'https://music.liuzhijin.cn/?id='+xmlyUrlArr[xuaIndex]+'&type=ximalaya&playUrl='+encodeURIComponent(currentUrl); } } } if(!!playUrl){ GM_openInTab(playUrl, false); } }) }; musicvip.start=function(){ if(this.judgeVipWebsite()){ this.addStyle(); this.generateHtml(); this.operation(); } }; if(isOpenMusicVipModule){ musicvip.start(); } //--抖音解析开始 var douyingHelper={}; douyingHelper.anasetinterval=null; douyingHelper.generateHtml = function(){ var innnerCss = ".video_analysis_889988{font-size:12px;padding:8px;text-align:center;color:#FFF;background-color:#F93A60;cursor:pointer;margin-bottom:15px;};"; $("body").prepend("<style>"+innnerCss+"</style>"); var topBox = "<div style='position:fixed;z-index:999999;top:40%;left:0px;'>"+ "<div class='video_analysis_889988'><a style='color:#FFFFFF;' href='http://www.tool77.com/video' target='_blank'>网页解析</a></div>"+ "<div id='douyin_helper_download_btn' class='video_analysis_889988'><a style='color:#FFFFFF;' href='javascript:void(0);' target='_blank'>本地解析:准备中</a></div>"+ "</div>"; $("body").append(topBox); }; douyingHelper.isDouyin=function(){ if(window_url.indexOf("www.iesdouyin.com/share/video")!=-1){ return true; } return false; } douyingHelper.getDownloadUrl=function(){ var times=1; this.anasetinterval = setInterval(function(){ $("#douyin_helper_download_btn").find("a").text("本地解析:准备中("+times+"S)"); times++; },1000); var $that = this; return new Promise(function(resolve, reject){ try{ var windowurl = window.location.href; var itemID = windowurl.split("?")[0].replace("https://www.iesdouyin.com/share/video/","").replace("/",""); var getVisitedUrl = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="+itemID; GM_xmlhttpRequest({ url: getVisitedUrl, method: "get", headers: { 'User-agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' }, onload: function(response) { var status = response.status; if(status==200||status=='200'){ var responseText = response.responseText; if(!!responseText){ try{ var jsonObjeect = JSON.parse(responseText); var item_list = jsonObjeect["item_list"][0]["video"]["play_addr"]["url_list"][0]; resolve({"status":"success", "playerUrl":item_list}) }catch(e){} } } reject({"status":"error"}); } }); }catch(e){ reject({"status":"error"}); } }); }; douyingHelper.getPlayerUrl=function(){ this.getDownloadUrl().then((data)=>{ var playerUrl = data.playerUrl; playerUrl = playerUrl.replace("playwm","play"); //新版本需要20200428,改版 var $a = $("#douyin_helper_download_btn").find("a"); GM_xmlhttpRequest({ url: playerUrl, method: "get", headers: { 'User-agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' }, onload: function(response) { clearInterval(douyingHelper.anasetinterval); douyingHelper.anasetinterval=null; var status = response.status; if(status==200||status=='200'){ var finalUrl = response.finalUrl; if(!!finalUrl){ $a.text("本地解析:点我下载"); $a.attr("href",finalUrl); }else{ $a.text("本地解析:出错了"); } } } }); }).catch((error)=>{$a.text("本地解析:出错了");}); }; douyingHelper.start=function(){ if(this.isDouyin()){ this.generateHtml(); this.getPlayerUrl(); } } if(iSOpenDouyinModule){ douyingHelper.start(); } //快手去水印下载 var kuaishouHelper={}; kuaishouHelper.anasetinterval=null; kuaishouHelper.isKuaiShou=function(){ var windowurl = window.location.href; if(windowurl.indexOf("video.kuaishou.com")!=-1){ return true; } return false; }; kuaishouHelper.generateHtml = function(){ var innnerCss = ` .video_analysis_889988{font-size:12px;padding:8px;text-align:center;color:#FFF;background-color:#F93A60;cursor:pointer;margin-bottom:15px;}; #douyin_helper_download_play{display:none;} `; $("body").prepend("<style>"+innnerCss+"</style>"); var topBox = "<div style='position:fixed;z-index:999999;top:40%;left:0px;'>"+ "<div class='video_analysis_889988'><a style='color:#FFFFFF;' href='http://www.tool77.com/video' target='_blank'>网页解析</a></div>"+ "<div id='douyin_helper_download_analysis' class='video_analysis_889988'>本地解析:点我解析</div>"+ "</div>"; $("body").append(topBox); }; kuaishouHelper.getPlayerUrl=function(){ var $analysis = $("#douyin_helper_download_analysis"); var isRun = false; var $that = this; $analysis.on("click", function(){ if(isRun) return; var windowurl = window.location.href; if(windowurl.indexOf("#")!=-1){ windowurl = windowurl.split("#")[0]; } if(windowurl.indexOf("?")!=-1){ windowurl = windowurl.split("?")[0]; } var urlArray = windowurl.split("/"); var sourceId = urlArray[urlArray.length-1]; if(!sourceId){ return; } windowurl = "https://c.kuaishou.com/fw/photo/"+sourceId; var times=1; isRun = true; $that.anasetinterval = setInterval(function(){ $analysis.text("本地解析:准备中("+times+"S)"); times++; },1000); //windowurl = windowurl.replace("https://video.kuaishou.com/featured", "https://c.kuaishou.com/fw/photo"); GM_xmlhttpRequest({ url: windowurl, method: "get", headers: { 'User-agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' }, onload: function(response) { var status = response.status; var playurl = ""; if(status==200||status=='200'){ var responseText = response.responseText; if(!!responseText){ try{ playurl = responseText.match(/"srcNoMark":"(https:\/\/.*?)"/i)[1]; }catch(e){} } } console.log("playurl="+playurl); clearInterval(kuaishouHelper.anasetinterval); kuaishouHelper.anasetinterval==null; isRun=false; if(!!playurl){ $analysis.text("本地解析:点我解析"); GM_openInTab(playurl, false); }else{ $analysis.text("本地解析:失败:点我重试"); } } }); }); }; kuaishouHelper.start=function(){ if(this.isKuaiShou()){ kuaishouHelper.generateHtml(); kuaishouHelper.getPlayerUrl(); } }; if(iSOpenKuaishouModule){ kuaishouHelper.start(); } //--VIP视频破解开始 var movievipHelper={}; movievipHelper.analysisWebsite="http://kivi8.top/mov/s?ssqr=0&url=@@"; movievipHelper.customizeSourceArray=customizeMovieInterface; movievipHelper.defaultSourceArray=[ {"name":"纯净线路1","url":"https://z1.m1907.cn/?jx="}, {"name":"纯净线路2","url":"https://jx.618g.com/?url="}, {"name":"B站","url":"https://vip.parwix.com:4433/player/?url="}, {"name":"B站2","url":"https://jx.yingxiangbao.cn/vip.php?url="}, {"name":"B站3","url":"https://vip.52jiexi.top/?url="}, {"name":"B站4","url":"https://jx.yparse.com/index.php?url="}, {"name":"B站5","url":"https://jx.116kan.com/?url="}, {"name":"B站7","url":"https://www.cuan.la/m3u8.php?url="}, {"name":"bl解析","url":"https://vip.bljiex.com/?v="}, {"name":"冰豆","url":"https://api.bingdou.net/?url="}, {"name":"八八","url":"https://jiexi.q-q.wang/?url="}, {"name":"爸比云","url":"https://jx.1ff1.cn/?url="}, {"name":"百域","url":"https://jx.618g.com/?url="}, {"name":"clouse6","url":"http://jx.clousx6.cn/player/?url="}, {"name":"ckmov","url":"https://www.ckmov.vip/api.php?url="}, {"name":"初心","url":"http://jx.bwcxy.com/?v="}, {"name":"大幕","url":"https://jx.52damu.com/dmjx/jiexi.php?url="}, {"name":"二度","url":"https://jx.du2.cc/?url="}, {"name":"凡凡","url":"https://jx.wslmf.com/?url="}, {"name":"福星","url":"https://jx.popo520.cn/jiexi/?url="}, {"name":"跟剧","url":"https://www.5igen.com/dmplayer/player/?url="}, {"name":"ha12","url":"https://py.ha12.xyz/sos/index.php?url="}, {"name":"Hk","url":"https://jx.rdhk.net/?v="}, {"name":"H8","url":"https://www.h8jx.com/jiexi.php?url="}, {"name":"豪华啦","url":"https://api.lhh.la/vip/?url="}, {"name":"黑米","url":"https://www.myxin.top/jx/api/?url="}, {"name":"黑云","url":"https://jiexi.380k.com/?url="}, {"name":"蝴蝶","url":"https://api.hdworking.top/?url="}, {"name":"IDC","url":"https://jx.idc126.net/jx/?url="}, {"name":"IK解析","url":"https://vip.ikjiexi.top/?url="}, {"name":"金桥","url":"https://jqaaa.com/jx.php?url="}, {"name":"解析S","url":"https://jx.jiexis.com/?url="}, {"name":"久播(明日)","url":"https://jx.jiubojx.com/vip.php?url="}, {"name":"九八看","url":"https://jx.youyitv.com/?url="}, {"name":"凉城","url":"https://jx.mw0.cc/?url="}, {"name":"蓝影","url":"http://huiwanka.xyz/jx/?url="}, {"name":"流氓凡","url":"https://jx.wslmf.com/?url="}, {"name":"m3u8","url":"https://jx.m3u8.tv/jiexi/?url="}, {"name":"m3u8tv","url":"https://jiexi.janan.net/jiexi/?url="}, {"name":"Mao","url":"https://titan.mgtv.com.kunlanys.com/m3u8.php?url="}, {"name":"磨菇","url":"https://jx.wzslw.cn/?url="}, {"name":"诺诺","url":"https://www.ckmov.com/?url="}, {"name":"诺讯","url":"https://www.nxflv.com/?url="}, {"name":"OK","url":"https://okjx.cc/?url="}, {"name":"千忆","url":"https://v.qianyicp.com/v.php?url="}, {"name":"穷二代","url":"https://jx.ejiafarm.com/dy.php?url="}, {"name":"千叶","url":"https://yi29f.cn/vip.php?url="}, {"name":"思云","url":"https://jx.ap2p.cn/?url="}, {"name":"思古","url":"https://api.sigujx.com/?url="}, {"name":"思古2","url":"https://api.bbbbbb.me/jx/?url="}, {"name":"思古3","url":"https://jsap.attakids.com/?url="}, {"name":"宿命","url":"https://api.sumingys.com/index.php?url="}, {"name":"时光","url":"http://timeys.maosp.me/jx/?url="}, {"name":"石云","url":"https://jiexi.071811.cc/jx.php?url="}, {"name":"tv920","url":"https://api.tv920.com/vip/?url="}, {"name":"通用","url":"https://jx.598110.com/index.php?url="}, {"name":"维多","url":"https://jx.ivito.cn/?url="}, {"name":"无名","url":"https://www.administratorw.com/video.php?url="}, {"name":"xx","url":"https://chkkk.top/jiexi/ys?url="}, {"name":"小蒋极致","url":"https://www.kpezp.cn/jlexi.php?url="}, {"name":"小狼","url":"https://jx.yaohuaxuan.com/?url="}, {"name":"新线路","url":"https://vip.kurumit3.top/?v="}, {"name":"新线路2","url":"https://jx.hnhsn.com/api/?url="}, {"name":"星驰","url":"https://vip.cjys.top/?url="}, {"name":"星空","url":"http://60jx.com/?url="}, {"name":"要搜","url":"https://www.yaosou.cc/jiexi/?v="}, {"name":"云端","url":"https://jx.ergan.top/?url="}, {"name":"用心","url":"https://yi29f.cn/vip.php?url="}, {"name":"一起走吧","url":"http://jiexi.yiqizouba.top/?url="}, {"name":"8B","url":"https://api.8bjx.cn/?url="}, {"name":"17云","url":"https://www.1717yun.com/jx/ty.php?url="}, {"name":"33t","url":"https://www.33tn.cn/?url="}, {"name":"41","url":"https://jx.f41.cc/?url="}, {"name":"69","url":"https://api.69ne.com/?url="}, {"name":"89","url":"https://www.ka61b.cn/jx.php?url="}, {"name":"180","url":"https://jx.000180.top/jx/?url="}, {"name":"200","url":"https://vip.66parse.club/?url="}, {"name":"517","url":"https://cn.bjbanshan.cn/jx.php?url="}, {"name":"973","url":"https://jx.973973.xyz/?url="}, {"name":"8090","url":"https://www.8090g.cn/?url="} ]; movievipHelper.getServerSource=function(){ GM_xmlhttpRequest({ url:"https://cdn.jsdelivr.net/gh/pizcat/static@master/url_01.json?t="+Math.random(), method:"GET", headers:{"Content-Type": "application/x-www-form-urlencoded"}, timeout:1500, synchronous: false, onload: function(response) { var status = response.status; if(status==200||status=='200'){ try{ var serverResponseJson = JSON.parse(response.responseText); if(serverResponseJson.length!=0){ movievipHelper.defaultSourceArray = serverResponseJson;//覆盖掉本地地址 } }catch(e){ console.log("serverResponseJson error"+e); } } movievipHelper.defaultSourceArray = movievipHelper.customizeSourceArray.concat(movievipHelper.defaultSourceArray); //执行操作 movievipHelper.addStyle(); movievipHelper.generateHtml(); movievipHelper.operation(); } }); }; movievipHelper.eleId = Math.ceil(Math.random()*100000000); movievipHelper.judgeVipWebsite=function(){ var isVip = false; var host = window.location.host; var vipWebsites = ["iqiyi.com","v.qq.com","youku.com", "le.com","tudou.com","mgtv.com","sohu.com", "acfun.cn","bilibili.com","baofeng.com","pptv.com"]; for(var b=0; b<vipWebsites.length; b++){ if(host.indexOf(vipWebsites[b]) != -1){ isVip = true; break; } } return isVip; }; movievipHelper.addStyle=function(){ var themeColor = "#DD001B"; var innnerCss = "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" {position:fixed;top:290px; left:0px; padding:5px 0px; width:35px;z-index:9999999899999;}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item{cursor:pointer; width:33px; text-align:center;}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.jump_analysis_website{padding:10px 0px;background-color:"+themeColor+";}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.open_page_inner_source{margin-top:10px; padding:5px 0px;background-color:"+themeColor+";}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item >img{width:23px; display:inline-block; vertical-align:middle;}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item>.play_source_box{display:none;width:310px;height:400px;position:absolute;left:33px;overflow:hidden;}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item>.play_source_box> .inner_table_box{width:330px;height:100%;padding-left:10px;overflow-y:scroll;overflow-x:hidden;}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item>.play_source_box> .inner_table_box> table{width:300px;border-spacing:5px;border-collapse:separate;line-height:25px;}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item>.play_source_box> .inner_table_box> table td{width:33%;color:#fff;font-size:12px;text-align:center;cursor:pointer;background-color:"+themeColor+";box-shadow:0px 0px 5px #fff;border-radius:3px;}"+ "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item>.play_source_box> .inner_table_box> table td:hover{color:#260033;background-color:#D6717C}"; $("body").prepend("<style>"+innnerCss+"</style>"); }; movievipHelper.generateHtml=function(){ var html=""; var vipImgBase64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABACAYAAABFqxrgAAADBklEQVR4Xu2cz6tNURTHP7tI5iRlID9CJFMlkYGSRPGklBRKiCSSxJMBkYGSgWQq/gBT/gMDUzMzf8RX6959nuO9e+75sff54d69B+/W23evvdbnrLX32j/OdfgiaStwGzgBvHfOPc7qln9KsrpHRfU9/n+xgt6ngW/AK+fcT9PV2R9JZ4A3wHpvQBVh/yuETO/fwDXn3GfnAXxa9vTmAUJm8oJBMADmCfkyTxC+GAT1GMOD6DpBsIExeUKCMArH5AkJwnhcTp4wBcI85QmFnpAgAAlCgjAeMJMnJAjJE5YWdSkcIq5vvwP7IsprRVSrGaNzzuSfAz4Aa1qxIILQ1iHkNnKfAA8j6BxdRGcQ/IbuOuAtYDu+gymdQsh5xX7gHbB7CCR6gZCDccGPF6Ot/75KrxB8iKwCngL35hZCzit2Ac/8CVinPIo8YRH4OkWTQ1WO4WyKrGuNJDsGfAlsr9vW0v0mehdCqHCmV3oM1wRCzjPuAC9qgmiU6Q4Wgh8vNgJ2+HulIozZg5DzioMexuESGLMLIQfjkh+LNhXAmH0IPkTueq9YOwHEbEOQdMobv3dKSMwmBEl7fAhUWW/EhTCBdnaEn839bU+RtvS2PmyqXF11dmiid+9p8yTjJF0ELPZ3VjQ+6GuDgiDpAHAfOBZkVc3Gg4AgaQPwALieXSaraUfQ13uHIOmmN35bkCUBjXuDIOm4N/5ogP5RmnYOQdIOwJ7+1SgWRBDSGQRJNrXajVmL+80RdI8mYtp+QlknlfMESSe98UfKhAbW235CWVmhd6tLacBS3BvA5TLNItXHzRhjbKoAv4CiFV8ku/8RM0gIbRg6TWaC0PRKQdtjQvKErgkkTxgTjzsmNNm/7+HJL+8y6rnDAOzpToVW0+buzAjrKUFIF7zHHpQ8IUFInrA0mqZw8OHwY8IFqkaZV9hEFaV1E71HL4c+9wcdeS2aCItiRaCQJnovZC+MfwTO5hRoIixQ/yjN6+j994XxrGtJt4DzwBbgdaSdpSiW1RBSBcKKnw74AzEYpoku7zbwAAAAAElFTkSuQmCC"; var openBase64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAmCAYAAACCjRgBAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAL9SURBVFhH1Zg9aBRBGIZjhGAwas6AjSKilYkajWChqKVBQRBsFUtBsLMzIEEtDCFFCsFCsU0jKGphYyOKCoqFP1FQRDh/EiMm57H36/PefhvuuNvs5i7o7AMfszNz833vO7s3yW3bUlIul9uJNdZNHqVSaVWxWLxE229DyQLhPfl8frZQKDzl+jix2qaSAY9PCgM/acu0M9yNES4327T7mIFpGQjAxH3uxF6i0z7mLuitMyByudwXDAwRG+yjboLWhgaqmMDELtp2W+IWCOvAwFRFagjMv+ZLfhoj62xZa5BzOcm20+6k7VXfxlP0+4gdmvc8r3+heWIbsY/xX0QkfDeuk7NPuVqCXF0ke8Bz+omdeYaIytFHO0j/JTv2nnhLfLDjMWz+ja7JU/QlRsP6J6w5GuRsChav1EmhhCSbo+m28UH6WY0H0P9NEzrfDBjO6Lgl3xblXTRm4J7l0+2vFjjrD/vQ1xkfOt8K9hToEexQ/ti4YkBg4Bt5z2UymfWqEQuXDFQxgZndqhOJowZUa5LmFHV6VC8UVw0EoO0qtbaqZkNcNyDsuD0krapdQxIMCGrl0DmczWY3qf48STEQgNa7fMH3c+n/8kuaAYGB79Q/KB2JM0DNKfTepL7/f1SSDFCv8p+s6s+TBAM8MnNovEPNPapdg+sGqPGRXT/P5TLVrcNVA+TOI/wRdQ6rXiguGiDvVzSNUSP6V5trBtj1F8QJ1YiFKwaUm7hB3l7lj021ARL8819kgjyT5DurvIuG9V3csockKRI/6AcCj9CfIUSOKOgvYNi8UMu4NMXCjsfbrDmgnE3B4k6SXCTGiWH1bXyA/mVilBghxiLmrxDjiIp1VzD7mY0bSqfT9f9h/i/QtQJhUe+FPIQ/ZgOO2TJ3QF83AkPfzHF3dDzqhe9GW+IWCGv4apGxErv+ijhpH3UTtNYZYNen2fVrnucN2MfcBb01Brh+x66fsWn34Yu5FtF/CB2Pt+j7PzqSApueIp4j/gLiF34dsiS0tf0FTeKCC8H/mvYAAAAASUVORK5CYII="; html+= "<div id='plugin_analysis_vip_movie_box_"+movievipHelper.eleId+"'>"; html+= "<div class='plugin_item jump_analysis_website' title='VIP视频破解'><img src='"+vipImgBase64+"'></div>"; html+= "<div class='plugin_item open_page_inner_source'><img src='"+openBase64+"'>"; html+= "<div class='play_source_box'>"; html+= "<div class='inner_table_box'>"; html+= "<table style=''><tr>"; for(var playLineIndex=0; playLineIndex<this.defaultSourceArray.length; playLineIndex++){ if(playLineIndex%3==0){ html +="<tr>"; html += "<td data-url='"+this.defaultSourceArray[playLineIndex].url+"'>"+this.defaultSourceArray[playLineIndex]['name']+"</td>"; continue; } html += "<td data-url='"+this.defaultSourceArray[playLineIndex].url+"'>"+this.defaultSourceArray[playLineIndex]['name']+"</td>"; if((playLineIndex+1)%3==0){ html +="</tr>"; } } html+= "</tr></table>"; html+= "</div></div>"; html+= "</div>"; html+= "</div>"; $("body").append(html); var $vipMovieBox = $("#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+""); var $playSourceBox = $("#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+">.plugin_item>.play_source_box"); var btnHeight = $vipMovieBox.height(); var playSourceBoxHeight = $playSourceBox.height(); var playSourceBoxTop = (playSourceBoxHeight-btnHeight)*0.5; $playSourceBox.css("top","-"+playSourceBoxTop+"px"); }; movievipHelper.operation=function(){ $("body").on("click", "#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" .jump_analysis_website", function(){ var jumpWebsite=movievipHelper.analysisWebsite.replace("@@", window.location.href); window.location.href=jumpWebsite; }); var $vipMovieBox = $("#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+">.open_page_inner_source"); var $playSourceBox = $("#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+">.plugin_item>.play_source_box"); $vipMovieBox.on("mouseover", () => { $playSourceBox.show(); }); $vipMovieBox.on("mouseout", () => { $playSourceBox.hide(); }); var player_nodes = [ { url:"v.qq.com", node:"#mod_player"}, { url:"www.iqiyi.com", node:"#flashbox"}, { url:"v.youku.com", node:"#player"}, { url:"w.mgtv.com", node:"#mgtv-player-wrap"}, { url:"www.mgtv.com", node:"#mgtv-player-wrap"}, { url:"tv.sohu.com", node:"#player"}, { url:"film.sohu.com", node:"#playerWrap"}, { url:"www.le.com", node:"#le_playbox"}, { url:"video.tudou.com", node:".td-playbox"}, { url:"v.pptv.com", node:"#pptv_playpage_box"}, { url:"vip.pptv.com", node:".w-video"}, { url:"www.wasu.cn", node:"#flashContent"}, { url:"www.acfun.cn", node:"#ACPlayer"}, { url:"vip.1905.com", node:"#player"}, {url:"play.tudou.com",node:"#player"}, {url:"www.bilibili.com/video",node:"#bilibiliPlayer"}, {url:"www.bilibili.com/bangumi",node:"#player_module"}, ]; var node = ""; for(var m in player_nodes) { var playUrl = window.location.href; if(playUrl.indexOf(player_nodes[m].url)!= -1){ node = player_nodes[m].node; } } $("#plugin_analysis_vip_movie_box_"+movievipHelper.eleId+" >.plugin_item>.play_source_box>.inner_table_box> table td").on("click", function(){ $("#play-iframe-outer-7788op").remove(); var playUrl = window.location.href; var playHtml = "<div id='play-iframe-outer-7788op' style='width:100%;height:100%;'><iframe allowtransparency=true frameborder='0' scrolling='no' allowfullscreen=true allowtransparency=true name='jx_play' style='height:100%;width:100%' id='play-iframe-6677i-7788'></iframe></div>"; $(node).html(playHtml); var iframeSrc= $(this).attr("data-url")+playUrl; $("#play-iframe-6677i-7788").attr("src", iframeSrc); }) }; movievipHelper.adAccelerate=function(){//视频广告加速 switch (window.location.host) { case 'www.iqiyi.com': try{ unsafeWindow.rate = 0; unsafeWindow.Date.now = () => { return new unsafeWindow.Date().getTime() + (unsafeWindow.rate += 1000); } setInterval(() => { unsafeWindow.rate = 0; }, 600000); }catch(e){} try{ setInterval(() => { if (document.getElementsByClassName("cupid-public-time")[0] != null) { $(".skippable-after").css("display", "block"); document.getElementsByClassName("skippable-after")[0].click(); } $(".qy-player-vippay-popup").css("display", "none"); $(".black-screen").css("display", "none"); }, 500); }catch(e){} break; case 'v.qq.com': try{ setInterval(() => { //视频广告加速 $(".txp_ad").find("txpdiv").find("video")[0].currentTime = 1000; $(".txp_ad").find("txpdiv").find("video")[1].currentTime = 1000; }, 1000) setInterval(() => { var txp_btn_volume = $(".txp_btn_volume"); if (txp_btn_volume.attr("data-status") === "mute") { $(".txp_popup_volume").css("display", "block"); txp_btn_volume.click(); $(".txp_popup_volume").css("display", "none"); } $(".mod_vip_popup").css("display", "none"); $(".tvip_layer").css("display", "none"); $("#mask_layer").css("display", "none"); }, 500); }catch(e){} break; case 'v.youku.com': try{ window.onload = function () { if (!document.querySelectorAll('video')[0]) { setInterval(() => { document.querySelectorAll('video')[1].playbackRate = 16; }, 100) } } setInterval(() => { var H5 = $(".h5-ext-layer").find("div") if(H5.length != 0){ $(".h5-ext-layer div").remove(); var control_btn_play = $(".control-left-grid .control-play-icon"); if (control_btn_play.attr("data-tip") === "播放") { $(".h5player-dashboard").css("display", "block"); control_btn_play.click(); $(".h5player-dashboard").css("display", "none"); } } $(".information-tips").css("display", "none"); }, 500); }catch(e){} break; case 'tv.sohu.com': try{ setInterval(() => { $(".x-video-adv").css("display", "none"); $(".x-player-mask").css("display", "none"); $("#player_vipTips").css("display", "none"); }, 500); }catch(e){} break } }; movievipHelper.start=function(){ if(movievipHelper.judgeVipWebsite() && window.top==window.self){ movievipHelper.getServerSource(); movievipHelper.adAccelerate(); } }; if(isOpenVideoVipModule){ movievipHelper.start(); } //--知乎助手开始 var zhihuHelper={}; zhihuHelper.start = function(){ if(website_host == "link.zhihu.com"){ //直接跳转到目标网页 var regRet = location.search.match(/target=(.+?)(&|$)/); if(regRet && regRet.length==3){ location.href = decodeURIComponent(regRet[1]); } } //知乎正文 else if(website_host.indexOf("zhihu.com")!=-1){ //问题全部展开 function autoExpandQuestionInfo() { //展开问题描述 const s4 = document.querySelector('.QuestionRichText-more'); if (s4) { s4.click(); } const s0 = document.querySelector('.SignContainer-content'); if (s0) { const s1 = document.querySelector('.Modal-backdrop'); if (s1) { s1.click(); } const s2 = document.querySelector('.Modal-closeButton'); if (s2) { s2.click(); } } } //去除广告,可能造成误伤,用最小策略 function clearAdvert() { const ad1 = document.querySelector('.AppBanner'); if (ad1) { ad1.style.display = "none"; } const ad2 = document.querySelector('.AdblockBanner'); if (ad2) { ad2.style.display = "none"; } } //去除登录提示 function noLoginBox(){ var IntervalUnit = 200; var totalIntervalMs = 0; var loginInterval = setInterval(function(){ //$(".Modal-wrapper").hide(); $(".signFlowModal").children(".Modal-closeButton").click(); totalIntervalMs += IntervalUnit; if(totalIntervalMs >= 2000){ //循环多次,我就不信还显示 clearInterval(loginInterval); } }, IntervalUnit); $(".AppHeader-login").click(function(){ clearInterval(loginInterval); $(".Modal-wrapper").show(); }); } //更改为直接高清显示 function changeHeightQualityPic(){ $("body").find("img").each(function(){ var dataoriginal = $(this).attr("data-original"); if(!!dataoriginal){ $(this).attr("src", dataoriginal); } }); } // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 function timeFormat(time, fmt) { //author: meizz var o = { "M+": time.getMonth() + 1, //月份 "d+": time.getDate(), //日 "h+": time.getHours(), //小时 "m+": time.getMinutes(), //分 "s+": time.getSeconds(), //秒 "q+": Math.floor((time.getMonth() + 3) / 3), //季度 "S": time.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (time.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; } function questiodate() { function QuestionPage() { const title = document.querySelector(".QuestionPage"); if (title) { const dateCreated = title.querySelector("[itemprop~=dateCreated][content]").content; const dateModified = title.querySelector("[itemprop~=dateModified][content]").content; const ctime = timeFormat(new Date(dateCreated), "yyyy-MM-dd hh:mm:ss"); const mtime = timeFormat(new Date(dateModified), "yyyy-MM-dd hh:mm:ss"); const side = title.querySelector(".QuestionHeader-side"); var timediv = document.createElement('div'); timediv.innerHTML = `<p>创建于: ${ctime}</p><p>编辑于: ${mtime}</p>`; timediv.style.cssText = 'color:#999;font-size:12;'; side.appendChild(timediv); } } let listnum = 0; function ContentItem() { const list = document.querySelectorAll(".ContentItem"); if (listnum != list.length) { listnum = list.length; for (var i = 0; i < list.length; i++) { const item = list[i]; if (item.getAttribute('zh_date_mk') != 'true') { const dateCreated = item.querySelector("[itemprop~=dateCreated][content]").content; const dateModified = item.querySelector("[itemprop~=dateModified][content]").content; const ctime = timeFormat(new Date(dateCreated), "yyyy-MM-dd hh:mm:ss"); const mtime = timeFormat(new Date(dateModified), "yyyy-MM-dd hh:mm:ss"); const sideitem = item.querySelector(".css-h5al4j"); var timediv = document.createElement('span'); timediv.innerHTML = `<p>创建于: ${ctime} 编辑于: ${mtime}</p>`; timediv.class = "Voters"; timediv.style.cssText = 'color:#999;display:block;padding:5px 0px;'; sideitem.appendChild(timediv); item.setAttribute('zh_date_mk', 'true'); } } } } QuestionPage(); document.querySelector(".Question-main").addEventListener('DOMNodeInserted', ContentItem); } if(window_url.indexOf("https://www.zhihu.com/question/") != -1) { autoExpandQuestionInfo(); //问题全部展开 questiodate(); //问题日期 } noLoginBox(); //去除登录框 setInterval(clearAdvert, 1000); //去除广告 setInterval(changeHeightQualityPic, 500); //图片自动高清 } }; if(isOpenZhihuModule){ zhihuHelper.start(); } //领券 var goodsCoupon={}; goodsCoupon.getPlatform=function(){ var couponUrl = window.location.href; var platform=""; if(couponUrl.indexOf("suning.com")!=-1){ platform = "suning"; }else if(couponUrl.indexOf("detail.tmall")!=-1){ platform = "tmall"; }else if(couponUrl.indexOf("item.taobao.com")!=-1){ platform = "taobao"; }else if(couponUrl.indexOf("item.jd.com")!=-1){ platform = "jd"; }else if(couponUrl.indexOf("detail.vip.com")!=-1){ platform = "vpinhui"; }else if(couponUrl.indexOf("mobile.yangkeduo.com")!=-1){ platform = "pdd"; } return platform; } goodsCoupon.filterStr = function(str){ if(!str) return ""; str = str.replace(/\t/g,""); str = str.replace(/\r/g,""); str = str.replace(/\n/g,""); str = str.replace(/\+/g,"%2B");//"+" str = str.replace(/\&/g,"%26");//"&" str = str.replace(/\#/g,"%23");//"#" return encodeURIComponent(str) }; goodsCoupon.getGoodsData=function(platform){ var goodsId = ""; var goodsName = ""; var websiteUrl = window.location.href; if(platform=="taobao"){ goodsId = this.getQueryString("id"); goodsName=$(".tb-main-title").text(); }else if(platform=="tmall"){ goodsId = this.getQueryString("id"); goodsName=$(".tb-detail-hd").text(); }else if(platform=="jd"){ goodsName=$("div.sku-name").text(); goodsId = this.getQueryStringByUrl(websiteUrl); }else if(platform=="suning"){ var text = $("#itemDisplayName").text(); if(!!text){ text = text.replace("苏宁超市",""); text = text.replace("自营",""); } goodsName=text; goodsId = this.getQueryStringByUrl(websiteUrl); }else if(platform=="vpinhui"){ goodsId = this.getQueryStringByUrl(websiteUrl).replace("detail-",""); goodsName = $(".pib-title-detail").text(); }else if(platform=="pdd"){ goodsId = this.getQueryString("goods_id"); goodsName = $(".enable-select").text(); } var data={"goodsId":goodsId, "goodsName":this.filterStr(goodsName)} return data; }; goodsCoupon.createHtml = function(platform, goodsId, goodsName){ if(!platform || !goodsId) return; var goodsCouponUrl = "https://www.whatbuytoday.com/api/plugin/hit/v2?script=1&"; if(platform!="vpinhui"){ goodsCouponUrl = goodsCouponUrl+"platform="+platform+"&id="+goodsId+"&q="+goodsName; }else{ var vip = goodsId.split("-"); var vaddition = vip[0]; var vid = vip[1]; goodsCouponUrl = goodsCouponUrl+"platform="+platform+"&id="+vid+"&q="+goodsName+"&addition="+vaddition; } GM_xmlhttpRequest({ url: goodsCouponUrl, method: "GET", headers: {"Content-Type": "application/x-www-form-urlencoded"}, onload: function(response) { var status = response.status; if(status==200||status=='200'){ var serverResponseJson = JSON.parse(response.responseText); var data = serverResponseJson.data; var cssText = data.css; var htmlText = data.html; var handler = data.handler; if(!cssText || !htmlText || !handler){ return; } $("body").prepend("<style>"+cssText+"</style>"); var handlers = handler.split("@"); for(var i=0; i<handlers.length; i++){ var $handler = $(""+handlers[i]+""); if(platform=="taobao"){ $handler.parent().after(htmlText); }else if(platform=="tmall"){ $handler.parent().after(htmlText); }else if(platform=="jd"){ $handler.after(htmlText); }else if(platform=="suning"){ $handler.parent().after(htmlText); }else if(platform=="vpinhui"){ $handler.parent().after(htmlText); }else if(platform=="pdd"){ $handler.after(htmlText); } } } } }); }; goodsCoupon.getQueryString = function(tag) { var t = new RegExp("(^|&)" + tag + "=([^&]*)(&|$)"); var a = window.location.search.substr(1).match(t); if (a != null) return a[2]; return ""; }; goodsCoupon.getQueryStringByUrl = function(url) { if(url.indexOf("?")!=-1){ url = url.split("?")[0] } if(url.indexOf("#")!=-1){ url = url.split("#")[0] } var splitText = url.split("/"); var idText = splitText[splitText.length-1]; idText = idText.replace(".html",""); return idText; }; goodsCoupon.start = function(){ var platform = this.getPlatform(); if(!platform) return; var delayMS = 0; if(platform=="vpinhui"){ //唯品会采用了异步加载 var vipInterval = setInterval(function(){ if($(".pib-title-detail").length!=0 || delayMS>=1200){ var goodsData = goodsCoupon.getGoodsData(platform); goodsCoupon.createHtml(platform, goodsData.goodsId, goodsData.goodsName); clearInterval(vipInterval) } delayMS+=100; },100); }else{ var goodsData = goodsCoupon.getGoodsData(platform); goodsCoupon.createHtml(platform, goodsData.goodsId, goodsData.goodsName); } }; if(isOpenGoodsCouponModule){ goodsCoupon.start(); } //CSDN使用增强 var csdnHelper={}; csdnHelper.start = function(){ var currentHost = window.location.host; var currentURL = window.location.href; if(currentHost.indexOf("csdn.net")==-1 && currentHost.indexOf("iteye.com")==-1){ return; } // 根据网速自己设置时间间隔 var interval = 200; var sideInterval = 200; var bbsInterval = 200; // 在ADBlock之后运行 var iteyeInterval = 100; var blog = /article/; var bbs = /topics/; var iteye = /iteye/; if(currentHost.indexOf("bbs.csdn.net")!=-1){ $(".ad_top").remove(); $("div[class^='ad_']").remove(); } if(currentHost.indexOf("www.csdn.net")!=-1){ $("div[id^='floor-ad_']").remove(); } //若为CSDN论坛,则: if(bbs.test(currentURL)){ setTimeout(function () { $(".js_show_topic").click(); $(".pulllog-box").remove(); // 底部广告 $(".mediav_ad").remove(); // 帖子尾部广告 $(".post_recommend").remove(); // 帖子内[CSDN推荐] $(".ad_item").remove(); // 右侧广告 $(".bbs_left_box").remove(); $(".ad_top").remove(); }, bbsInterval); } else if (blog.test(currentURL)){ //csdn文章 csdn.copyright.init("", "", ""); //去除剪贴板劫持 localStorage.setItem("anonymousUserLimit", ""); // 免登陆 if (document.getElementsByClassName("btn-readmore")[0]){ document.getElementsByClassName("btn-readmore")[0].click(); } //自动展开 if (document.getElementsByClassName("hide-article-box")[0]){ document.getElementsByClassName("hide-article-box")[0].remove(); document.getElementById("content_views").setAttribute("style", "user-select: text;") } //移除专栏 if (document.getElementsByClassName("comment-list-box")[0]){ document.getElementsByClassName("comment-list-box")[0].removeAttribute("style"); } //自动展开 $("#footerRightAds").remove(); //https://blog.csdn.net/m0_37777700/article/details/* $("#content_views").unbind("click");//移除url拦截 setTimeout(function () { if (document.getElementsByClassName("csdn-tracking-statistics mb8 box-shadow")[0]) { document.getElementsByClassName("csdn-tracking-statistics mb8 box-shadow")[0].remove(); //左上广告 } if(document.getElementById("asideFooter")){ document.getElementById("asideFooter").remove(); } if (document.getElementById("adContent")) { document.getElementById("adContent").remove(); } if (document.getElementsByClassName("p4course_target")[0]) { document.getElementsByClassName("p4course_target")[0].remove(); //左上广告 } if(document.getElementsByClassName("bdsharebuttonbox")[0]){ document.getElementsByClassName("bdsharebuttonbox")[0].remove(); } if(document.getElementsByClassName("vip-caise")[0]){ document.getElementsByClassName("vip-caise")[0].remove(); } if (document.getElementsByClassName("fourth_column")[0]) { document.getElementsByClassName("fourth_column")[0].remove(); //左上广告 } if(document.getElementById("recommendAdBox")){ document.getElementById("recommendAdBox").remove(); } }, interval); setTimeout(function () { if ($("div[id^='dmp_ad']")[0]) { $("div[id^='dmp_ad']")[0].remove(); } if (document.getElementsByClassName("fourth_column")[0]) { document.getElementsByClassName("fourth_column")[0].remove(); } }, sideInterval); setTimeout(function () { if (document.getElementsByClassName("pulllog-box")[0]) { document.getElementsByClassName("pulllog-box")[0].remove(); // 底部广告 } if(document.getElementsByClassName("recommend-fixed-box")[0]){ var recommendObj = document.getElementsByClassName("recommend-fixed-box")[0].getElementsByClassName("right-item"); for (var h = (recommendObj.length - 1); h>=0; h--) { if (recommendObj[h].tagName == "DIV") { recommendObj[h].remove(); } } } if (document.getElementsByClassName("p4course_target")[0]) { document.getElementsByClassName("p4course_target")[0].remove(); } }, sideInterval); setTimeout(function () { var hot = document.getElementsByClassName("type_hot_word"); var recommend = document.getElementsByClassName("recommend-ad-box"); for (var i = (hot.length - 1); i >= 0; i--) { hot[i].remove(); } for (var j = (recommend.length - 1); j >= 0; j--) { recommend[j].remove(); } if (document.getElementsByClassName("fourth_column")[0]) { document.getElementsByClassName("fourth_column")[0].remove(); } }, sideInterval); setTimeout(function () { for(var x=470; x<490; x++){ var kp_box = document.getElementById("kp_box_"+x); //右侧广告 if(kp_box) { kp_box.remove(); } } }, 5000); } else if (iteye.test(currentURL)) { setInterval(function(){ document.getElementById('btn-readmore').click(); }, iteyeInterval); setTimeout(function () { document.getElementsByClassName("blog-sidebar")[0].remove(); document.getElementById('main').style.width = '1000px'; }, sideInterval); } }; if(isOpenCsdnModule){ csdnHelper.start(); } })(); //下载知乎视频,作者:王超, 脚本链接:https://greasyfork.org/zh-CN/scripts/39206 //版本:1.18 //版权归原作者所有 (async () => { if (window.location.host == 'www.zhihu.com') return; const playlistBaseUrl = 'https://lens.zhihu.com/api/videos/'; //const videoBaseUrl = 'https://video.zhihu.com/video/'; const videoId = window.location.pathname.split('/').pop(); // 视频id const menuStyle = 'transform:none !important; left:auto !important; right:-0.5em !important;'; const playerId = 'player'; const coverSelector = '#' + playerId + ' > div:first-child > div:first-child > div:nth-of-type(2)'; const controlBarSelector = '#' + playerId + ' > div:first-child > div:first-child > div:last-child > div:last-child > div:first-child'; const svgDownload = '<path d="M9.5,4 H14.5 V10 H17.8 L12,15.8 L6.2,10 H9.5 Z M6.2,18 H17.8 V20 H6.2 Z"></path>'; let player = document.getElementById(playerId); let resolutionMap = {'标清': 'sd', '高清': 'ld', '超清': 'hd'}; let videos = []; // 存储各分辨率的视频信息 let downloading = false; function getBrowerInfo() { let browser = (function (window) { let document = window.document; let navigator = window.navigator; let agent = navigator.userAgent.toLowerCase(); // IE8+支持.返回浏览器渲染当前文档所用的模式 // IE6,IE7:undefined.IE8:8(兼容模式返回7).IE9:9(兼容模式返回7||8) // IE10:10(兼容模式7||8||9) let IEMode = document.documentMode; let chrome = window.chrome || false; let system = { // user-agent agent: agent, // 是否为IE isIE: /trident/.test(agent), // Gecko内核 isGecko: agent.indexOf('gecko') > 0 && agent.indexOf('like gecko') < 0, // webkit内核 isWebkit: agent.indexOf('webkit') > 0, // 是否为标准模式 isStrict: document.compatMode === 'CSS1Compat', // 是否支持subtitle supportSubTitle: function () { return 'track' in document.createElement('track'); }, // 是否支持scoped supportScope: function () { return 'scoped' in document.createElement('style'); }, // 获取IE的版本号 ieVersion: function () { let rMsie = /(msie\s|trident.*rv:)([\w.]+)/; let match = rMsie.exec(agent); try { return match[2]; } catch (e) { return IEMode; } }, // Opera版本号 operaVersion: function () { try { if (window.opera) { return agent.match(/opera.([\d.]+)/)[1]; } else if (agent.indexOf('opr') > 0) { return agent.match(/opr\/([\d.]+)/)[1]; } } catch (e) { return 0; } } }; try { // 浏览器类型(IE、Opera、Chrome、Safari、Firefox) system.type = system.isIE ? 'IE' : window.opera || (agent.indexOf('opr') > 0) ? 'Opera' : (agent.indexOf('chrome') > 0) ? 'Chrome' : //safari也提供了专门的判定方式 window.openDatabase ? 'Safari' : (agent.indexOf('firefox') > 0) ? 'Firefox' : 'unknow'; // 版本号 system.version = (system.type === 'IE') ? system.ieVersion() : (system.type === 'Firefox') ? agent.match(/firefox\/([\d.]+)/)[1] : (system.type === 'Chrome') ? agent.match(/chrome\/([\d.]+)/)[1] : (system.type === 'Opera') ? system.operaVersion() : (system.type === 'Safari') ? agent.match(/version\/([\d.]+)/)[1] : '0'; // 浏览器外壳 system.shell = function () { if (agent.indexOf('edge') > 0) { system.version = agent.match(/edge\/([\d.]+)/)[1] || system.version; return 'Edge'; } // 遨游浏览器 if (agent.indexOf('maxthon') > 0) { system.version = agent.match(/maxthon\/([\d.]+)/)[1] || system.version; return 'Maxthon'; } // QQ浏览器 if (agent.indexOf('qqbrowser') > 0) { system.version = agent.match(/qqbrowser\/([\d.]+)/)[1] || system.version; return 'QQBrowser'; } // 搜狗浏览器 if (agent.indexOf('se 2.x') > 0) { return '搜狗浏览器'; } // Chrome:也可以使用window.chrome && window.chrome.webstore判断 if (chrome && system.type !== 'Opera') { let external = window.external; let clientInfo = window.clientInformation; // 客户端语言:zh-cn,zh.360下面会返回undefined let clientLanguage = clientInfo.languages; // 猎豹浏览器:或者agent.indexOf("lbbrowser")>0 if (external && 'LiebaoGetVersion' in external) { return 'LBBrowser'; } // 百度浏览器 if (agent.indexOf('bidubrowser') > 0) { system.version = agent.match(/bidubrowser\/([\d.]+)/)[1] || agent.match(/chrome\/([\d.]+)/)[1]; return 'BaiDuBrowser'; } // 360极速浏览器和360安全浏览器 if (system.supportSubTitle() && typeof clientLanguage === 'undefined') { let storeKeyLen = Object.keys(chrome.webstore).length; let v8Locale = 'v8Locale' in window; return storeKeyLen > 1 ? '360极速浏览器' : '360安全浏览器'; } return 'Chrome'; } return system.type; }; // 浏览器名称(如果是壳浏览器,则返回壳名称) system.name = system.shell(); // 对版本号进行过滤过处理 // System.version = System.versionFilter(System.version); } catch (e) { // console.log(e.message); } return system; })(window); if (browser.name == undefined || browser.name == '') { browser.name = 'Unknown'; browser.version = 'Unknown'; } else if (browser.version == undefined) { browser.version = 'Unknown'; } return browser; } function fetchRetry(url, options = {}, times = 1, delay = 1000, checkStatus = true) { return new Promise((resolve, reject) => { // fetch 成功处理函数 function success(res) { if (checkStatus && !res.ok) { failure(res); } else { resolve(res); } } // 单次失败处理函数 function failure(error) { times--; if (times) { setTimeout(fetchUrl, delay); } else { reject(error); } } // 总体失败处理函数 function finalHandler(error) { throw error; } function fetchUrl() { return fetch(url, options) .then(success) .catch(failure) .catch(finalHandler); } fetchUrl(); }); } // 下载指定url的资源 async function downloadUrl(url, name = (new Date()).valueOf() + '.mp4') { let browser = getBrowerInfo(); // Greasemonkey 需要把 url 转为 blobUrl if (GM_info.scriptHandler == 'Greasemonkey') { let res = await fetchRetry(url); let blob = await res.blob(); url = URL.createObjectURL(blob); } // Chrome 可以使用 Tampermonkey 的 GM_download 函数绕过 CSP(Content Security Policy) 的限制 if (window.GM_download) { GM_download({url, name}); } else { // firefox 需要禁用 CSP, about:config -> security.csp.enable => false let a = document.createElement('a'); a.href = url; a.download = name; // a.target = '_blank'; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(function () { URL.revokeObjectURL(url); }, 100); } } function humanSize(size) { let n = Math.log(size) / Math.log(1024) | 0; return (size / Math.pow(1024, n)).toFixed(0) + ' ' + (n ? 'KMGTPEZY'[--n] + 'B' : 'Bytes'); } if (!player) return; // 获取视频信息 const res = await fetchRetry(playlistBaseUrl + videoId, { headers: { 'referer': 'refererBaseUrl + videoId', 'authorization': 'oauth c3cef7c66a1843f8b3a9e6a1e3160e20' // in zplayer.min.js of zhihu } }, 3); const videoInfo = await res.json(); // 获取不同分辨率视频的信息 for (let [key, video] of Object.entries(videoInfo.playlist)) { video.name = key; if (!videos.find(v => v.width == video.width)) { videos.push(video); } } // 按分辨率大小排序 videos = videos.sort(function (v1, v2) { return v1.width == v2.width ? 0 : (v1.width > v2.width ? 1 : -1); }).reverse(); document.addEventListener('DOMNodeInserted', (evt) => { let domControlBar = evt.relatedNode.querySelector(':scope > div:last-child > div:first-child'); if (!domControlBar || domControlBar.querySelector('.download')) return; let domFullScreenBtn = domControlBar.querySelector(':scope > div:nth-last-of-type(1)'); let domResolutionBtn = domControlBar.querySelector(':scope > div:nth-last-of-type(3)'); let domDownloadBtn, defaultResolution, buttons; if (!domFullScreenBtn || !domFullScreenBtn.querySelector('button')) return; // 克隆分辨率菜单或全屏按钮为下载按钮 domDownloadBtn = (domResolutionBtn && (domResolutionBtn.className == domFullScreenBtn.className)) ? domResolutionBtn.cloneNode(true) : domFullScreenBtn.cloneNode(true); defaultResolution = domDownloadBtn.querySelector('button').innerText; // 生成下载按钮图标 domDownloadBtn.querySelector('button:first-child').outerHTML = domFullScreenBtn.cloneNode(true).querySelector('button').outerHTML; domDownloadBtn.querySelector('svg').innerHTML = svgDownload; domDownloadBtn.className = domDownloadBtn.className + ' download'; buttons = domDownloadBtn.querySelectorAll('button'); // button 元素添加对应的下载地址 buttons.forEach(dom => { let video = videos.find(v => v.name == resolutionMap[dom.innerText || defaultResolution]); video = video || videos[0]; dom.dataset.video = video.play_url; if (dom.innerText) { (dom.innerText = `${dom.innerText} (${humanSize(video.size)})`); } else if (buttons.length == 1) { dom.nextSibling.querySelector('div').innerText = humanSize(video.size); } }); // 鼠标事件 - 显示菜单 domDownloadBtn.addEventListener('pointerenter', () => { let domMenu = domDownloadBtn.querySelector('div:nth-of-type(1)'); if (domMenu) { domMenu.style.cssText = menuStyle + 'opacity:1 !important; visibility:visible !important'; } }); // 鼠标事件 - 隐藏菜单 domDownloadBtn.addEventListener('pointerleave', () => { let domMenu = domDownloadBtn.querySelector('div:nth-of-type(1)'); if (domMenu) { domMenu.style.cssText = menuStyle; } }); // 鼠标事件 - 选择菜单项 domDownloadBtn.addEventListener('pointerup', event => { if (downloading) { alert('当前正在执行下载任务,请等待任务完成。'); return; } let e = event.srcElement || event.target; while (e.tagName != 'BUTTON') { e = e.parentNode; } downloadUrl(e.dataset.video); }); // 显示下载按钮 domControlBar.appendChild(domDownloadBtn); }); })();