您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
全网VIP视频免费破解,支持:腾讯、爱奇艺、优酷、芒果、pptv、乐视等其它网站。
当前为
// ==UserScript== // @name 🔥🔥全网VIP视频免费解析,并去广告🔥🔥 // @namespace https://www.softrr.cn/ // @version 2.0.9 // @author hackhase // @description 全网VIP视频免费破解,支持:腾讯、爱奇艺、优酷、芒果、pptv、乐视等其它网站。 // @license MIT // @icon https://v.qq.com/favicon.ico#/ // @match *://v.qq.com/* // @match *://*.iqiyi.com/* // @match *://*.iq.com/* // @match *://*.youku.com/* // @match *://*.tudou.com/* // @match *://film.sohu.com/* // @match *://*.bilibili.com/* // @match *://*.pptv.com/* // @match *://tv.sohu.com/* // @match *://*.mgtv.com/* // @match *://*.1905.com/* // @match *://*.le.com/* // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.global.prod.js // @connect www.softrr.cn // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant unsafeWindow // ==/UserScript== (t=>{if(typeof GM_addStyle=="function"){GM_addStyle(t);return}const e=document.createElement("style");e.textContent=t,document.head.append(e)})(" :root{font-family:Inter,Avenir,Helvetica,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.modal-wrapper[data-v-0339af62]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999}.modal[data-v-0339af62]{background-color:#fff;padding:20px;border-radius:5px}.header[data-v-0339af62]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.header h2[data-v-0339af62]{margin:0;font-size:20px;font-weight:700}.header button[data-v-0339af62]{border:none;background-color:transparent;font-size:20px;cursor:pointer}.content[data-v-0339af62]{max-height:400px;overflow:auto;font-size:16px;display:flex;justify-content:space-between}.content .produce p[data-v-0339af62]{margin-top:15px}.content .produce .ipt[data-v-0339af62]{margin-top:15px;height:30px;border-radius:5px;padding-left:10px}.content .img[data-v-0339af62]{display:flex;align-items:center;justify-content:center}.content .img img[data-v-0339af62]{width:180px}input[data-v-0339af62]::-webkit-input-placeholder{color:#aab2bd;font-size:14px;padding-left:5px}.copy[data-v-1969642d]{width:160px;position:fixed;right:10px;top:80px;color:#111;z-index:999;display:flex;flex-direction:column}.copy .btnPrase[data-v-1969642d]{width:80px;height:80px;background-color:red;color:#fff;border-radius:50%;font-size:16px}.copy .btn[data-v-1969642d]:hover{background-color:#87ceeb;color:#fff}.copy .select[data-v-1969642d]{position:relative;font-size:15px}.copy .select .m-2[data-v-1969642d]{position:absolute;left:-112px;top:-77px;width:70px;height:70px;border-radius:50%;margin-top:5px;background:#594686;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;text-align-last:center;color:#fff}.copy .select .m-3[data-v-1969642d]{position:absolute;left:-74px;top:14px;width:70px;height:70px;border-radius:50%;margin-top:5px;background:#b39d76;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;text-align-last:center;color:#fff}.copy .select .prase[data-v-1969642d]{position:absolute;left:32px;top:21px;width:70px;height:70px;border-radius:50%;margin-top:5px;background:#924a55;text-align:center;text-align-last:center;color:#fff} "); (function (vue) { 'use strict'; var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)(); const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const _withScopeId$1 = (n) => (vue.pushScopeId("data-v-0339af62"), n = n(), vue.popScopeId(), n); const _hoisted_1$1 = { class: "modal" }; const _hoisted_2$1 = { class: "header" }; const _hoisted_3$1 = { class: "content" }; const _hoisted_4$1 = { class: "produce" }; const _hoisted_5$1 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("p", null, "1、扫描右侧公众号,点击关注!", -1)); const _hoisted_6$1 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("p", null, "2、在软件爬取者后台回复:验证码", -1)); const _hoisted_7 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("p", null, "3、在下方输入框输入获取的验证码后回车", -1)); const _hoisted_8 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("div", { class: "img" }, [ /* @__PURE__ */ vue.createElementVNode("img", { src: "https://www.softrr.cn/assets/pqz-daa4b840.jpg", alt: "" }) ], -1)); const _sfc_main$1 = { __name: "Model", props: { title: { type: String, required: true }, code: { type: Number || String } }, setup(__props, { expose: __expose }) { const props = __props; const visible = vue.ref(false); const openModal = () => { visible.value = true; }; const closeModal = () => { visible.value = false; }; __expose({ visible, openModal, closeModal }); const codeValue = vue.ref(); const enterCode = () => { if (codeValue.value == props.code) { localStorage.setItem("code", codeValue.value); visible.value = false; alert("验证成功,请再次点击解析!"); codeValue.value = ""; } else { alert("验证码错误,请重新输入!"); codeValue.value = ""; } }; return (_ctx, _cache) => { return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { class: "modal-wrapper", onClick: vue.withModifiers(closeModal, ["self"]) }, [ vue.createElementVNode("div", _hoisted_1$1, [ vue.createElementVNode("div", _hoisted_2$1, [ vue.createElementVNode("h2", null, vue.toDisplayString(__props.title), 1), vue.createElementVNode("button", { onClick: closeModal }, "X") ]), vue.createElementVNode("div", _hoisted_3$1, [ vue.createElementVNode("div", _hoisted_4$1, [ _hoisted_5$1, _hoisted_6$1, _hoisted_7, vue.withDirectives(vue.createElementVNode("input", { class: "ipt", type: "text", "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => codeValue.value = $event), onKeydown: vue.withKeys(enterCode, ["enter"]), placeholder: "请输入验证码后按回车" }, null, 544), [ [vue.vModelText, codeValue.value] ]) ]), _hoisted_8 ]) ]) ], 512)), [ [vue.vShow, visible.value] ]); }; } }; const Model = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-0339af62"]]); const _withScopeId = (n) => (vue.pushScopeId("data-v-1969642d"), n = n(), vue.popScopeId(), n); const _hoisted_1 = { class: "copy" }; const _hoisted_2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1)); const _hoisted_3 = ["value"]; const _hoisted_4 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("option", { value: "in" }, "站内", -1)); const _hoisted_5 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("option", { value: "out" }, "站外", -1)); const _hoisted_6 = [ _hoisted_4, _hoisted_5 ]; const _sfc_main = { __name: "App", setup(__props) { const lineValue = vue.ref("https://www.ckplayer.vip/jiexi?url="); const videoParseList = vue.ref([]); _GM_xmlhttpRequest({ method: "GET", url: `https://www.softrr.cn/crawler/getLineList`, headers: { Referer: "https://www.softrr.cn/", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36" }, onload: function(res) { videoParseList.value = JSON.parse(res.response).data; } }); const code = vue.ref(); _GM_xmlhttpRequest({ method: "GET", url: `https://www.softrr.cn/crawler/getCode`, headers: { Referer: "https://www.softrr.cn/", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36" }, onload: function(res) { code.value = JSON.parse(res.response).data[0].code; } }); const showLine = vue.ref(false); const inLine = vue.ref("out"); const url = window.location.href; const model = vue.ref(""); const onPrase = () => { let locaCode = localStorage.getItem("code") || ""; if (locaCode == code.value) { if (inLine.value === "out") { window.open(lineValue.value + url, "_blank"); } else { window.location.href = lineValue.value + url; } showLine.value = false; } else { model.value.openModal(); } }; const title = vue.ref("为了减少端口压力,防止滥用,采取必要的验证手段。"); const parseListRef = vue.ref(""); const lineRef = vue.ref(""); const praseRef = vue.ref(""); const addAnimate = (ani) => { ani.animate( [ { width: "100px" } ], { duration: 1e3, easing: "linear", delay: 0, iterations: "Infinity", direction: "alternate", fill: "forwards" } ); }; const onShow = () => { console.log(showLine.value); showLine.value = !showLine.value; console.log(showLine.value); addAnimate(parseListRef.value); addAnimate(lineRef.value); addAnimate(praseRef.value); }; const selectRef = vue.ref(""); const btnPrase = vue.ref(""); const handler = (e) => { let select = document.getElementsByClassName("btnPrase")[0]; let target = e.target; console.log(showLine.value); if (target == select) { showLine.value = true; } else { showLine.value = false; } }; document.addEventListener("click", handler); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [ vue.createElementVNode("button", { onClick: vue.withModifiers(onShow, ["prevent", "stop"]), class: "btnPrase", ref_key: "btnPrase", ref: btnPrase }, [ vue.createTextVNode(" 解析 "), _hoisted_2, vue.createTextVNode(" 选项 ") ], 512), vue.withDirectives(vue.createElementVNode("div", { onClick: _cache[2] || (_cache[2] = vue.withModifiers(() => { }, ["stop"])), class: "select", ref_key: "selectRef", ref: selectRef }, [ vue.withDirectives(vue.createElementVNode("select", { "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => lineValue.value = $event), class: "m-2", ref_key: "parseListRef", ref: parseListRef }, [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(videoParseList.value, (item) => { return vue.openBlock(), vue.createElementBlock("option", { key: item.line, value: item.url }, vue.toDisplayString(item.line), 9, _hoisted_3); }), 128)) ], 512), [ [vue.vModelSelect, lineValue.value] ]), vue.withDirectives(vue.createElementVNode("select", { "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => inLine.value = $event), class: "m-3", ref_key: "lineRef", ref: lineRef }, _hoisted_6, 512), [ [vue.vModelSelect, inLine.value] ]), vue.createElementVNode("button", { onClick: onPrase, class: "prase", ref_key: "praseRef", ref: praseRef }, "解析", 512), vue.createVNode(Model, { title: title.value, code: code.value, ref_key: "model", ref: model }, null, 8, ["title", "code"]) ], 512), [ [vue.vShow, showLine.value] ]) ]); }; } }; const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1969642d"]]); vue.createApp(App).mount( (() => { const app = document.createElement("div"); document.body.append(app); return app; })() ); })(Vue);