瀏覽器安裝暴力猴擴展即可使用
// ==UserScript== // @name 破解VIP會員視頻集合 // @namespace https://greasyfork.org/zh-CN/users/104201 // @version 4.2.1 // @description 一鍵破解[優酷|騰訊|樂視|愛奇藝|芒果|AB站|音悅台]等VIP或會員視頻,解析接口貴精不貴多,絕對夠用。詳細方法看說明和圖片。包含了[破解全網VIP視頻會員-去廣告▶ttmsjx][VIP會員視頻解析▶龍軒][酷繪-破解VIP會員視頻▶ahuiabc2003]以及[VIP視頻破解▶hoothin]的部分接口。[Tampermonkey | Violentmonkey | Greasymonkey 4.0+] // @author 黃鹽 // @noframes // @match *://*.iqiyi.com/* // @match *://*.youku.com/* // @match *://*.le.com/* // @match *://*.letv.com/* // @match *://v.qq.com/* // @match *://*.tudou.com/* // @match *://*.mgtv.com/* // @match *://film.sohu.com/* // @match *://tv.sohu.com/* // @match *://*.acfun.cn/v/* // @match *://*.bilibili.com/* // @match *://vip.1905.com/play/* // @match *://*.pptv.com/* // @match *://v.yinyuetai.com/video/* // @match *://v.yinyuetai.com/playlist/* // @match *://*.fun.tv/vplay/* // @match *://*.wasu.cn/Play/show/* // @match *://*.56.com/* // @exclude *://*.bilibili.com/blackboard/* // @grant GM.getValue // @grant GM.setValue // @grant GM_getValue // @grant GM_setValue // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_openInTab // ==/UserScript== (() => { 'use strict'; const YoukuIcon = '<svg width="20px" height="20px" viewbox="0 0 50 50"><polyline points="18,15 33,25 18,35" style="fill:none;stroke:red;stroke-width:5"/><circle cx="25" cy="25" r="20" style="stroke:#2796FE;stroke-width:5;fill:none;"/></svg>'; const vqqIcon = '<svg width="20px" height="20px" viewbox="0 0 50 50"><polygon points="10,5 45,25 10,45" style="fill:#34ADFB;"/><polygon points="5,10 35,25 5,40" style="fill:#ffa807;"/><polygon points="10,12 35,25 10,38" style="fill:#a3f11f;"/><polygon points="15,20 25,25 15,30" style="fill:#fff;"/></svg>'; var tMscript = document.createElement('script'); tMscript.innerText = `q = function(cssSelector){return document.querySelector(cssSelector);};qa = function(cssSelector){return document.querySelectorAll(cssSelector);};`; document.head.appendChild(tMscript); window.q = function(cssSelector) {return document.querySelector(cssSelector);}; window.qa = function(cssSelector) {return document.querySelectorAll(cssSelector);}; window.makeEl = function(tag){return document.createElement(tag);}; /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ */ function GMaddStyle(cssText){ let a = document.createElement('style'); a.textContent = cssText; let doc = document.head || document.documentElement; doc.appendChild(a); } /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ * 為了兼容GreasyMonkey 4.0 獲取結構化數據,比如 json Array 等, * 應當先將字符串還原為對象,再執行后續操作 * GMgetValue(name,defaultValue).then((result)=>{ * let result = JSON.parse(result); * // other code... * }; */ function GMgetValue(name, defaultValue) { if (typeof GM_getValue === 'function') { return new Promise((resolve, reject) => { resolve(GM_getValue(name, defaultValue)); // reject(); }); } else { return GM.getValue(name, defaultValue); } } /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ * 為了兼容GreasyMonkey 4.0 儲存結構化數據,比如 json Array 等, * 應當先將對象字符串化, * GMsetValue(name, JSON.stringify(defaultValue)) */ function GMsetValue(name, defaultValue) { if (typeof GM_setValue === 'function') { GM_setValue(name, defaultValue); return new Promise((resolve, reject) => { resolve(); reject(); }); } else { return GM.setValue(name, defaultValue); } } var replaceRaw, /*是否嵌入當前頁面*/ episodes, /*是否啟用愛奇藝正確選集*/ userApisOn; /*是否加載自定義解析接口*/ GMaddStyle(` /*TMHY:TamperMonkeyHuanYan*/ #TMHYd{z-index:999999; position:absolute; left:0px; top:0px; width:100px; height:auto; border:0; margin:0;}/*TMHYdiv*/ #TMHYvideoContainer{z-index: 999998; background: rgba(0, 0, 0, .7); position: fixed; top: 15%; left:5%; height: 65%; width: 65%;resize:both;overflow:auto; box-shadow: 2px 2px 5px 5px rgba(255,255,0,.8)}/*TMHYVideoContainer*/ #TMHYvideoContainer button{position:absolute;top:2px;font-family:Arial;cursor:pointer;visibility:hidden;font-size:35px;color:#fff;background:transparent;border:0;text-shadow:0 0 2px #000;} #TMHYvideoContainer:hover button{visibility:visible;} #TMHYvideoContainer:hover button:hover{color:#ff0;} #TMHYiframe{height: 100%; width: 100%; overflow: auto; position:absolute; top: 0; left: 0; margin: auto; border: 0; box-shadow: 0 0 3em rgba(0, 0, 0, .4); z-index: -1; }/*TMHYIframe*/ #TMHYul{position:fixed;top:80px; left:0px;} #TMHYul li{list-style:none;} #TMHYul svg{float:right;} .TM1{opacity:0.3; position:relative;padding: 0 7px 0 0; min-width: 19px; cursor:pointer;} .TM1:hover{opacity:1;} .TM1 span{display:block; border-radius:0 5px 5px 0; background-color:#ffff00; border:0; font:bold 15px "微軟雅黑" !important; color:#ff0000; margin:0; padding:15px 2px;} .TM3{position:absolute; top:0; left:19px; display:none; border-radius:5px; margin:0; padding:0;} .TM3 li{float:none; width:90px; margin:0; font-size:14px; padding:3px 10px 2px 15px; cursor:pointer; color:#3a3a3a !important; background:rgba(255,255,0,0.8)} .TM3 li:hover{color:white !important; background:rgba(0,0,0,.8);} .TM3 li:last-child{border-radius: 0 0 5px 5px;} .TM3 li:first-child{border-radius: 5px 5px 0 0;} .TM1:hover .TM3{display:block} /*自定義解析接口,本頁播放窗口設置*/ .TMHYp {position:fixed;top:20%;left:20%;z-index:999999;background:yellow;padding:30px 20px 10px 20px;border-radius:10px;text-align:center;}/*TMHYpanel*/ .TMHYp * {font-size:16px;background:rgba(255,255,0,1);font-family:'微軟雅黑';color:#3a3a3a;border-radius:10px;} #tMuserDefine li {margin:5px;width:100%;list-style-type:none;} .TMHYp input[type=text] {border-radius:5px !important;border:1px solid #3a3a3a;margin:2px 10px 2px 5px;padding:2px 5px;} .TMHYlti {width:350px;}/*TMHYlongTextInput*/ .TMHYmti {width:160px;}/*TMHYmti*/ .idelete {float: left; display: inline-block; color: red; padding: 0 20px !important; cursor: pointer;} .iname {padding-right:10px;} li:hover .idelete,li:hover .ilink,li:hover .iname {background:rgba(224,175,17,0.62);} .TMHYp button {border:1px solid #3a3a3a;border-radius:5px;cursor:pointer;padding: 2px 10px;margin:10px 20px 0 20px;} .TMHYp button:hover {background:#3a3a3a;color:yellow;} .TMHYClose {position:absolute;top:0;left:0;margin:0!important;} .TMHYp fieldset {margin:0;padding:10px;} .TMHYp legend {padding:0 10px;} .TMHYp label {display:inline-block;} .TMHYspan80 {display:inline-block;text-align:right;width:80px;} .TMHYspan120 {display:inline-block;text-align:right;width:120px;} #inTabSettingSave {position:relative;margin-top:10px;padding:3px 20px;} `); var defaultapi = { title: "龍軒腳本的接口,默認用浮空解析,失效請更換接口", url: "http://goudidiao.com/?url=" }; //apis name:顯示的文字 url:接口 title:提示文字 intab:是否適合內嵌(嵌入判斷:GMgetValue("replaceRaw",false)值||intab值) var apis =[ {name:"百域閣",url:"http://api.baiyug.cn/vip/index.php?url=",title:"轉圈圈就換線路",intab:1}, {name:"vParse"+vqqIcon,url:"https://api.vparse.org/?url=",title:"支持騰訊",intab:1}, {name:"貓雲"+vqqIcon,url:"https://jx.maoyun.tv/index.php?id=",title:"支持騰訊",intab:1}, //{name:"FLVSP[騰訊]",url:"https://api.flvsp.com/?url=",title:"支持騰訊",intab:1},//解析源同上 {name:"噗噗電影",url:"http://pupudy.com/play?make=url&id=",title:"綜合接口,破解全網VIP視頻會員-去廣告【作者ttmsjx】腳本的接口",intab:0}, {name:"搶先影院"+YoukuIcon,url:"http://www.qxyingyuan.vip/play?make=url&id=",title:"據說優酷比較穩定",intab:0}, {name:"酷繪",url:"http://appapi.svipv.kuuhui.com/svipjx/liulanqichajian/browserplugin/qhjx/qhjx.php?id=",title:"綜合接口,酷繪*【作者ahuiabc2003】腳本的接口",intab:0}, {name:"旋風解析",url:"http://api.xfsub.com/index.php?url=",title:"1905優先使用",intab:1}, {name:"石頭解析",url:"https://jiexi.071811.cc/jx.php?url=",title:"手動點播放",intab:1}, {name:"無名小站",url:"http://www.sfsft.com/admin.php?url=",title:"無名小站同源",intab:1}, {name:"VIP看看",url:"http://q.z.vip.totv.72du.com/?url=",title:"更換線路成功率會提高",intab:1}, {name:"ODFLV",url:"http://aikan-tv.com/?url=",title:"不穩定,廣告過濾軟件可能有影響",intab:1}, {name:"163人",url:"http://jx.api.163ren.com/vod.php?url=",title:"偶爾支持騰訊",intab:1}, {name:"CKFLV",url:"http://www.0335haibo.com/tong.php?url=",title:"CKFLV雲,部分站點不支持",intab:1}, {name:"無名小站2",url:"http://www.wmxz.wang/video.php?url=",title:"轉圈圈就換線路",intab:1}, {name:"眼睛會下雨",url:"http://www.vipjiexi.com/yun.php?url=",title:"www.vipjiexi.com",intab:1}, {name:"1008影視"+YoukuIcon,url:"http://api.1008net.com/v.php?url=",title:"據說可以看布袋游戲視頻",intab:1}, {name:"人人發布",url:"http://v.renrenfabu.com/jiexi.php?url=",title:"綜合,多線路",intab:0} ]; //嵌入頁面播放 function openInTab(evt) { if(evt.target.dataset.intab === '1'){ //如果頁面有播放窗口,只需更新播放窗口的 src, 如果沒有播放窗口,讀取播放窗口位置信息,新建一個播放窗 if(q('#TMHYiframe') === null){ GMgetValue('intabSize','{"height":"","width":"","left":"","top":""}').then((position)=>{ var sty = JSON.parse(position); sty = 'height:'+sty.height+';width:'+sty.width+';left:'+sty.left+';top:'+sty.top+';'; var a = makeEl('div'); a.id = 'TMHYvideoContainer'; a.setAttribute('style', sty); a.innerHTML = '<button title="關閉播放窗口" onclick="document.body.removeChild(q(\'#TMHYvideoContainer\'))">🗙</button>'; document.body.appendChild(a); var b=makeEl('iframe'); b.id='TMHYiframe'; b.src=evt.target.dataset.url + location.href; q('#TMHYvideoContainer').appendChild(b); }); } else{ q('#TMHYiframe').src=evt.target.dataset.url + location.href; } } else{ //不適合頁內播放的,打開新標簽 window.open(evt.target.dataset.url + location.href); } } //保存嵌入頁面大小位置設置 function saveInTabSetting(){ var intabSize = { height:q('#TMiframeHeight').value, width:q('#TMiframeWidth').value, left:q('#TMiframeLeft').value, top:q('#TMiframeTop').value }; GMsetValue('intabSize', JSON.stringify(intabSize)); setTimeout('document.body.removeChild(q("#TMHYSetting"));', 30); } //生成"嵌入頁面大小位置設置"面板 function intabSetting(){ var intabSize = GMgetValue('intabSize','{"height":"","width":"","left":"","top":""}') .then((ag)=>{ var a = makeEl('div'); a.id='TMHYSetting'; a.setAttribute('class', 'TMHYp'); a.innerHTML = ` <button class="TMHYClose" onclick="document.body.removeChild(this.parentNode)">🗙</button> <fieldset> <legend>頁內播放窗口位置大小</legend> <label for="TMpH"><span class="TMHYspan80">高度</span><input type="text" id="TMpH" value="${intabSize.height}" class="TMHYmti" placeholder='如"300px"或者"65%"'/></label> <label for="TMpW"><span class="TMHYspan80">寬度</span><input type="text" id="TMpW" value="${intabSize.width}" class="TMHYmti" placeholder='如"300px"或者"65%"'/></label><br /> <label for="TMpL"><span class="TMHYspan80">左邊距</span><input type="text" id="TMpL" value="${intabSize.left}" class="TMHYmti" placeholder='如"300px"或者"65%"'/></label> <label for="TMpT"><span class="TMHYspan80">上邊距</span><input type="text" id="TMpT" value="${intabSize.top}" class="TMHYmti" placeholder='如"300px"或者"65%"'/></label> </fieldset> <button onclick="(function(){var a=getComputedStyle(q('#TMHYvideoContainer'));q('#TMpH').value=a.height,q('#TMpW').value=a.width,q('#TMpL').value=a.left,q('#TMpT').value=a.top;})()">獲取當前播放窗尺寸</button> <button id="intabSettingPreview" onclick="(function(){a=q('#TMHYvideoContainer').style.cssText='height:'+q('#TMpH').value+';width:'+q('#TMpW').value+';left:'+q('#TMpL').value+';top:'+q('#TMpT').value+';';})()">預覽</button> <button id="intabSettingSave">保存</button> `; document.body.appendChild(a); q('#intabSettingSave').addEventListener('click', saveInTabSetting, false); }); } //檢查是否勾選頁內解析 function noNewTabCheck() { var x, arr = qa(".TM4 li"); replaceRaw = q("#intabChekbx").checked; GMsetValue("replaceRaw", replaceRaw); for (x = 0; x < arr.length; x++) { if (replaceRaw) { arr[x].addEventListener("click", openInTab, false); arr[x].setAttribute('onclick', ''); } else { arr[x].removeEventListener("click", openInTab, false); arr[x].setAttribute('onclick', 'window.open(this.dataset.url + location.href)'); } } } /* 愛奇藝正確選集 */ function rightEpsLinkCheck() { episodes = q("#realLinkChekbx").checked; GMsetValue("episodes", episodes); if (episodes) { q('#widget-dramaseries').addEventListener('click', function getLink(e) { //-------------iqiyi劇集真實播放頁面方法 Begin------------------ //Code piece infomation: //License:MIT Author:hoothin Homepage: http://hoothin.com Email: rixixi@gmail.com var target = e.target.parentNode.tagName == "LI" ? e.target.parentNode : (e.target.parentNode.parentNode.tagName == "LI" ? e.target.parentNode.parentNode : e.target.parentNode.parentNode.parentNode); if (target.tagName != "LI") return; GM_xmlhttpRequest({ method: 'GET', url: "http://cache.video.qiyi.com/jp/vi/" + target.dataset.videolistTvid + "/" + target.dataset.videolistVid + "/?callback=crackIqiyi", onload: function(result) { var crackIqiyi = function(d) { location.href = d.vu; }; eval(result.responseText); } }); }); //-------------iqiyi劇集真實播放頁面方法 End------------------ } else { q('#widget-dramaseries').removeEventListener('click', getLink); } } /* 勾選自定義接口 */ function addApiCheck() { userApisOn = q('#addApiChekBx').checked; GMsetValue('userApisOn', userApisOn); if(userApisOn) { selfDefine(); setTimeout(showAddApiPanel, 200); } } /* 執行 */ var div = makeEl("div"); div.id = "TMHYd"; var txt = '', i = 0; /*提供的接口列表*/ for (i in apis) { txt += `<li data-order=${i} data-url="${apis[i].url}" data-intab=${apis[i].intab} title="${apis[i].title}" onclick="window.open(this.dataset.url+location.href)">${apis[i].name}</li>`; } div.innerHTML = ` <ul id="TMHYul"> <li class="TM1"><span id="TMList" title="${defaultapi.title}" onclick="window.open(\'${defaultapi.url}\'+window.location.href)">▶</span><ul class="TM3 TM4">${txt}</ul></li> <li class="TM1"><span id="TMSet">▣</span><ul class="TM3"> <li><label><input type="checkbox" id="intabChekbx">本頁解析</label></li> <li><label><input type="checkbox" id="realLinkChekbx">愛奇藝正確選集</label></li> <li><input type="checkbox" id="addApiChekBx"><label id="addApiBtn">增加接口</label></li> <li><label id="intabSettingBtn">本頁播放設置</label></li> </ul></li> </ul> `; document.body.appendChild(div); q("#addApiChekBx").addEventListener('change', addApiCheck, false); // q("#addApiChekBx").addEventListener('click', addApiCheck, false); GMgetValue('userApisOn',false) .then((ag)=>{ userApisOn = ag; q("#addApiChekBx").checked = userApisOn; /*看看是否需要加載自定義的接口列表*/ if (userApisOn) { GMgetValue('userApis', "[{}]").then((ag1)=>{ var userApis = JSON.parse(ag1), txt=''; for (var j in userApis) { try { if (userApis[j].link !== null) { txt += `<li data-order=${j} data-url="${userApis[j].link}" data-intab=${userApis[j].intab} onclick="window.open(this.dataset.url+location.href)">${userApis[j].name}</li>`; } } catch (e) {/*console.log(e);*/} } q('ul.TM3.TM4').innerHTML = txt + q('ul.TM3.TM4').innerHTML; selfDefine(); }); } }) .then(()=>{ q("#intabChekbx").addEventListener("click", noNewTabCheck, false); GMgetValue('replaceRaw',false).then((ag)=>{ replaceRaw = ag; q("#intabChekbx").checked = replaceRaw; if (replaceRaw) { noNewTabCheck(); } }); q("#realLinkChekbx").addEventListener("click", rightEpsLinkCheck, false); GMgetValue('episodes',false).then((ag)=>{ episodes = ag; q("#realLinkChekbx").checked = episodes; if (episodes && window.location.href.indexOf("iqiyi") != -1) { rightEpsLinkCheck(); } }); q("#addApiBtn").addEventListener('click', showAddApiPanel, false); q("#intabSettingBtn").addEventListener('click', intabSetting, false); }); /** 2017-10-24 自定義解析接口 */ /* 顯示增加接口的面板 */ function showAddApiPanel() { if (q('#tMuserDefine')) { q('#tMuserDefine').style.display = "block"; } else { alert(`(● ̄(エ) ̄●)づ\n\n未啟用[增加接口]功能\n請把 '▣增加接口'→'☑增加接口'!`); } } /* 生成增加接口面板 */ function selfDefine() { var a = makeEl('div'); a.id = 'tMuserDefine'; a.setAttribute('class', 'TMHYp'); a.setAttribute('style', 'display:none'); var txt = ` <button class="TMHYClose" onclick="q('#tMuserDefine').style.display='none';">🗙</button> <li><span class="TMHYspan120">解析接口名稱:</span><input type="text" id="tMname" class="TMHYlti" placeholder="顯示的名稱"></li> <li><span class="TMHYspan120">解析接口地址:</span><input type="text" id="tMparseLink" class="TMHYlti" placeholder="接口需要包含 http 或者 https"></li> <li><span class="TMHYspan80">本頁解析:</span><label for="tMintabckbx"><input type="checkbox" id="tMintabckbx"/>適合</label></li> <li id="tMbtnLi"> <button id="tMgo" onclick="window.open(q('#tMparseLink').value+location.href)">測試</button> <button id="tMadd">增加</button> <button id="tMsave">保存</button> </li> `; // var ar = await JSON.parse(GM.getValue('userApis', "[{}]")),d; GMgetValue('userApis', "[{}]").then((ag)=>{ var ar = JSON.parse(ag),d; try { if (ar[0].name !== undefined) { for (var i = 0; i < ar.length; i++) { d = (ar[i].intab==="1")?'checked':''; txt += `<li><span class="idelete" title="刪除" onclick="document.getElementById('tMuserDefine').removeChild(this.parentNode)">✘</span><input class="icheck" type="checkbox" ${d}><span class="iname">${ar[i].name}</span><span class="ilink">${ar[i].link}</span></li>`; } } } catch (e) {} a.innerHTML = txt; document.body.appendChild(a); /*事件綁定*/ q('#tMsave').addEventListener('click', function() { var newParseLinks = getarr(); GMsetValue('userApis', JSON.stringify(newParseLinks)); console.log(newParseLinks); }, false); q('#tMadd').addEventListener('click', function() { if (q('#tMname').value || q('#tMparseLink').value) { var b = q("#tMintabckbx").checked?"1":"0"; var c = q("#tMintabckbx").checked?"checked":""; var a = makeEl('li'); a.innerHTML = `<span class="idelete" title="刪除" onclick="document.getElementById('tMuserDefine').removeChild(this.parentNode)">✘</span><input class="icheck" type="checkbox" ${c}><span class="iname">${q('#tMname').value}:</span><span class="ilink">${q('#tMparseLink').value}</span>`; if (q('span[class=iname]') === null) { q('#tMuserDefine').appendChild(a); q('#tMname').value = ''; q('#tMparseLink').value = ''; } else { q('#tMuserDefine').insertBefore(a, q('span[class=iname]').parentNode); q('#tMname').value = ''; q('#tMparseLink').value = ''; } } }, false); }); } /* 保存按鈕執行函數:獲取值並 await GM.setValue() */ function getarr() { var userUrl = qa('.ilink'); var urlarr = [], tMname, tMparseLink, tMintabckbx; tMname = q('#tMname').value; tMparseLink = q('#tMparseLink').value; tMintabckbx = q('#tMintabckbx').checked?1:0; if (tMname || tMparseLink) { urlarr.push({ name: tMname, link: tMparseLink, intab:tMintabckbx }); } for (var i = 0; i < userUrl.length; i++) { var n, t, l; t = userUrl[i].innerText; n = userUrl[i].previousSibling.innerText; l = userUrl[i].previousSibling.previousSibling.checked?'1':'0'; urlarr.push({ name: n, link: t,intab:l }); } return urlarr; } /** 2017-10-24 自定義解析接口 END */ })(); // 資源參考http://www.5ifxw.com/vip/ // 資源參考http://live.gopartook.com/ // 資源參考http://tv.dsqndh.com // 資源參考http://51.ruyo.net/p/3127.html //有效性未知||不能直接引用接口 //http://www.yydy8.com/common/?url= //href="http://mt2t.com/yun?url= //https://api.47ks.com/webcloud/?v= //http://www.guqiankun.com/tools/vipvideo //{name:"PU.tn",url:"http://api.pu.tn/qq1/?url=",title:"據說可以看優酷布袋游戲",intab:0}, // {name:"舞動秋天",url:"http://qtzr.net/s/?qt=",title:"qtzr.net",intab:1}, //過期接口 //{name:"65YW",url:"http://www.65yw.com/65yw/?vid=",title:"新接口,穩定性未知"}, //{name:"紫狐",url:"http://yun.zihu.tv/play.html?url=",title:"效果可能不穩定"}, //{name:"雲解析",url:"http://www.efunfilm.com/yunparse/index.php?url=",title:"新接口,穩定性未知"}, //{name:"妹兒雲",url:"https://www.yymeier.com/api.php?url=",title:"不穩定"} //{name:"V雲[騰訊]",url:"http://www.viyun.me/jiexi.php?url=",title:"騰訊首選"},
