Greasy Fork is available in English.
多功能脚本,集合了全网VIP视频免费破解去广告,音乐免客户端下载,淘宝领券,知乎,,,,,,,,等等
// ==UserScript== // @name 枫叶自制方便脚本 // @namespace 枫叶 // @version 2 // @description 多功能脚本,集合了全网VIP视频免费破解去广告,音乐免客户端下载,淘宝领券,知乎,,,,,,,,等等 // @author zhaizhaidefengye // @include *://*.zhihu.com/* // @include *://v.vzuu.com/video/* // @include *v.youku.com/v_* // @include *m.youku.com/v* // @include *m.youku.com/a* // @include *v.qq.com/x/* // @include *v.qq.com/play* // @include *v.qq.com/cover* // @include *v.qq.com/tv/* // @include *film.sohu.com/album/* // @include *tv.sohu.com/* // @include *.iqiyi.com/v_* // @include *.iqiyi.com/w_* // @include *.iqiyi.com/a_* // @include *.le.com/ptv/vplay/* // @include *.tudou.com/listplay/* // @include *.tudou.com/albumplay/* // @include *.tudou.com/programs/view/* // @include *.tudou.com/v* // @include *.mgtv.com/b/* // @include *.acfun.cn/v/* // @include *.bilibili.com/video/* // @include *.bilibili.com/anime/* // @include *.bilibili.com/bangumi/play/* // @include *.pptv.com/show/* // @include *://*.baofeng.com/play/* // @include *://*.wasu.cn/Play/show* // @include *://v.yinyuetai.com/video/* // @include *://v.yinyuetai.com/playlist/* // @include *://item.taobao.com/* // @include *://*detail.tmall.com/* // @include *://*detail.tmall.hk/* // @include *://*.liangxinyao.com/* // @include *://music.163.com/song* // @include *://music.163.com/m/song* // @include *://y.qq.com/n/* // @include *://*.kugou.com/song* // @include *://*.kuwo.cn/yinyue* // @include *://*.kuwo.cn/play_detail* // @include *://*.xiami.com/* // @include *://music.taihe.com/song* // @include *://*.1ting.com/player* // @include *://music.migu.cn/v* // @include *://*.lizhi.fm/* // @include *://*.qingting.fm/* // @include *://*.ximalaya.com/* // @exclude *://*.eggvod.cn/* // @connect d.pcs.baidu.com // @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js // @require https://cdn.jsdelivr.net/npm/sweetalert2@9 // @require https://code.jquery.com/jquery-latest.js // @license GPL License // @grant GM_download // @grant GM_openInTab // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant unsafeWindow // @grant GM_setClipboard // @grant GM_getResourceURL // @grant GM_getResourceText // ==/UserScript== // @include *://*.zhihu.com/* // @include *://v.vzuu.com/video/* // @include *v.youku.com/v_* // @include *m.youku.com/v* // @include *m.youku.com/a* // @include *v.qq.com/x/* // @include *v.qq.com/p* // @include *v.qq.com/cover* // @include *v.qq.com/tv/* // @include *film.sohu.com/album/* // @include *tv.sohu.com/* // @include *.iqiyi.com/v_* // @include *.iqiyi.com/w_* // @include *.iqiyi.com/a_* // @include *.le.com/ptv/vplay/* // @include *.tudou.com/listplay/* // @include *.tudou.com/albumplay/* // @include *.tudou.com/programs/view/* // @include *.tudou.com/v* // @include *.mgtv.com/b/* // @include *.acfun.cn/v/* // @include *.bilibili.com/video/* // @include *.bilibili.com/anime/* // @include *.bilibili.com/bangumi/play/* // @include *.pptv.com/show/* // @include *.baofeng.com/play/* // @include *.wasu.cn/Play/show* // @include *://v.yinyuetai.com/video/* // @include *://v.yinyuetai.com/playlist/* // @include *://item.taobao.com/* // @include *://*detail.tmall.com/* // @include *://*detail.tmall.hk/* // @include *://*.liangxinyao.com/* // @include *://music.163.com/song* // @include *://music.163.com/m/song* // @include *://y.qq.com/n/* // @include *://*.kugou.com/song* // @include *://*.kuwo.cn/yinyue* // @include *://*.kuwo.cn/play_detail* // @include *://*.xiami.com/* // @include *://music.taihe.com/song* // @include *://*.1ting.com/player* // @include *://music.migu.cn/v* // @include *://*.lizhi.fm/* // @include *://*.qingting.fm/* // @include *://*.ximalaya.com/* // @exclude *://*.eggvod.cn/* // @connect d.pcs.baidu.com // @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js // @require https://cdn.jsdelivr.net/npm/sweetalert2@9 // @license GPL License // @grant GM_download // @grant GM_openInTab // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant unsafeWindow // @grant GM_setClipboard // @grant GM_getResourceURL // @grant GM_getResourceText // ==/UserScript== (function() { var couponUrl = window.location.href; if(couponUrl.indexOf('taobao') != -1 || couponUrl.indexOf('tmall') != -1){ //is_off $.get('https://www.zuihuimai.net/vrhr/loading.php',function(loading_html){ if(loading_html){ var head = document.getElementsByTagName('head')[0], cssURL = 'https://www.zuihuimai.net/tm/style.css', linkTag = document.createElement('link'); linkTag.id = 'dynamic-style'; linkTag.href = cssURL; linkTag.setAttribute('rel','stylesheet'); linkTag.setAttribute('media','all'); linkTag.setAttribute('type','text/css'); head.appendChild(linkTag); var goods_id = getQueryString('id'); var zhm_url = 'https://www.zuihuimai.net/vrhr/index.php'; if(goods_id){ $('#J_LinkBasket').parent().after(loading_html); $('.J_LinkAdd').parent().after(loading_html); if(window.location.host.search('taobao.com') != -1){ $('#zhm_table').addClass('zhm_tab_taobao'); }else{ $('#zhm_table').addClass('zhm_tab_tmall'); } $.get(zhm_url,{goods_id:goods_id},function(data){ $('#zhm_div_s').html(data); $('#zhm_div_s').html(data); if(window.location.host.search('taobao.com') != -1){ $('#zhm_table').addClass('zhm_tab_taobao'); }else{ $('#zhm_table').addClass('zhm_tab_tmall'); } }); } } }); } var play_url = window.location.href; var arr = new Array(); arr = play_url.split('?') var get_url = arr[0]; if(get_url.indexOf('eggvod.cn') == -1){ var jx_title=new Array() jx_title[0]="youku.com" jx_title[1]="iqiyi.com" jx_title[2]="le.com" jx_title[3]="qq.com" jx_title[4]="tudou.com" jx_title[5]="mgtv.com" jx_title[6]="sohu.com" jx_title[7]="acfun.cn" jx_title[8]="bilibili.com" jx_title[9]="pptv.com" jx_title[10]="baofeng.com" jx_title[11]="yinyuetai.com" jx_title[12]="wasu.cn" var title_result = false; for(var n=0;n<jx_title.length;n++){ if(get_url.indexOf(jx_title[n])!= -1){ var zhm_html = "<div href='javascript:void(0)' target='_blank' id='zhm_jx_url_lr' style='cursor:pointer;z-index:98;display:block;width:30px;height:30px;line-height:30px;position:fixed;left:0;top:300px;text-align:center;overflow:visible'><img src='https://cdn.80note.com/vip.gif' style='width:50px' ></div>"; $("body").append(zhm_html); } } $("#zhm_jx_url_lr").click(function(){ var play_jx_url = window.location.href; if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { var mobile_html = "<div style='margin:0 auto;padding:10px;'>"; mobile_html +="<button type='button' style='position:absolute;top:0;right:30px;font-size:30px;line-height: 1;color: #000;text-shadow: 0 1px 0 #fff;cursor: pointer;border:0;background:0 0;' onclick='location.reload();'>×</button>"; mobile_html += "<div><iframe src='https://www.eggvod.cn/mobile.php?zhm_jx="+play_jx_url +"' allowtransparency=true frameborder='0' scrolling='no' allowfullscreen=true allowtransparency=true name='jx_play'style='height:600px;width:100%'></iframe></div>" mobile_html += "</div>"; $("body").html(mobile_html); } else { $.get('https://www.eggvod.cn/jxcode.php',{in:81566699},function(data){ location.href='https://www.eggvod.cn/jx.php?lrspm='+data+'&zhm_jx='+play_jx_url; }); } }); var music_title=new Array() music_title[0]="163.com" music_title[1]= "y.qq.com" music_title[2]= "kugou.com" music_title[3]= "kuwo.cn" music_title[4]= "xiami.com" music_title[5]= "taihe.com" music_title[6]= "1ting.com" music_title[7]= "migu.cn" music_title[8]= "qingting.fm" music_title[9]= "lizhi.fm" music_title[10]= "ximalaya.com" for(var i=0;i<music_title.length;i++){ if(get_url.indexOf(music_title[i])!= -1){ var music_html = "<div href='javascript:void(0)' id='zhm_music_url_lr' style='cursor:pointer;z-index:98;display:block;width:30px;height:30px;line-height:30px;position:fixed;left:0;top:300px;text-align:center;'><img src='https://cdn.80note.com/vip.gif' style='width:50px' ></div>"; $("body").append(music_html); } } $("#zhm_music_url_lr").click(function(){ var music_jx_url = encodeURIComponent(window.location.href); window.open('http://www.eggvod.cn/music/?url='+music_jx_url); }); } //获取url参数; function getQueryString(e) { var t = new RegExp("(^|&)" + e + "=([^&]*)(&|$)"); var a = window.location.search.substr(1).match(t); if (a != null) return a[2]; return ""; } })(); //知乎视频 (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); }); })();