// ==UserScript== // @name 爱观影视vip通行证 // @name:zh-CN 爱观影视vip通行证 // @namespace https://scriptcat.org/zh-CN/script-show-page/6458 // @version 1.0.0 // @description 📺 长视频平台:爱奇艺 │ 腾讯视频 │ 优酷 │ 芒果TV │ 搜狐视频 │ 乐视 │ PPTV │ 1905电影网🎥 弹幕/二次元:哔哩哔哩 │ AcFun │ 西瓜视频 // @description:zh-CN 📺 长视频平台:爱奇艺 │ 腾讯视频 │ 优酷 │ 芒果TV │ 搜狐视频 │ 乐视 │ PPTV │ 1905电影网🎥 弹幕/二次元:哔哩哔哩 │ AcFun │ 西瓜视频K蓝光画质 | ●HDR杜比音效 | ★智能线路优选 | 💎免登录免费看 | 🎞️热播剧/最新电影/独家综艺/国漫日番 // @icon data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9ImZhc3RGb3J3YXJkQmciIGN4PSIwLjY1IiBjeT0iMC4yNSIgcj0iMC44Ij48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMDAzMzk5Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMDA2NmNjIi8+PC9yYWRpYWxHcmFkaWVudD48ZmlsdGVyIGlkPSJjaGV2cm9uc1NoYWRvdyIgeD0iLTIwJSIgeT0iLTIwJSIgd2lkdGg9IjE0MCUiIGhlaWdodD0iMTQwJSI+PGZlRHJvcFNoYWRvdyBkeD0iMSIgZHk9IjIiIHN0ZERldmlhdGlvbj0iMC41IiBmbG9vZC1jb2xvcj0iIzAwMCIgZmxvb2Qtb3BhY2l0eT0iMC43NSIvPjwvZmlsdGVyPjwvZGVmcz48Y2lyY2xlIGN4PSIzMiIgY3k9IjMyIiByPSIzMCIgZmlsbD0idXJsKCNmYXN0Rm9yd2FyZEJnKSIvPjxnIGZpbHRlcj0idXJsKCNjaGV2cm9uc1NoYWRvdykiPjxwYXRoIGQ9Ik0xOSAyMiBMIDMzIDMyIEwgMTkgNDIiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTMzIDIyIEwgNDcgMzIgTCAzMyA0MiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSI3IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiLz48L2c+PC9zdmc+ // @author lsym // @include *://v.qq.com/x/page/* // @include *://v.qq.com/x/cover/* // @include *://v.qq.com/tv/* // @include *://*.iqiyi.com/v_* // @include *://*.iqiyi.com/a_* // @include *://*.iqiyi.com/w_* // @include *://*.iq.com/play/* // @include *://v.youku.com/v_* // @include *://*.youku.com/v_* // @include *://*.youku.com/video* // @include *://*.youku.com/*?vid=* // @include *://*.mgtv.com/b/* // @include *://*.tudou.com/listplay/* // @include *://*.tudou.com/programs/view/* // @include *://*.tudou.com/albumplay/* // @include *://film.sohu.com/album/* // @include *://tv.sohu.com/v/* // @include *://*.bilibili.com/video/* // @include *://*.bilibili.com/bangumi/play/* // @include *://v.pptv.com/show/* // @include *://vip.pptv.com/show/* // @include *://www.wasu.cn/Play/show/* // @include *://*.le.com/ptv/vplay/* // @include *://*.acfun.cn/v/* // @include *://*.acfun.cn/bangumi/* // @include *://*.1905.com/play/* // @include *://m.v.qq.com/x/page/* // @include *://m.v.qq.com/x/cover/* // @include *://m.v.qq.com/* // @include *://m.iqiyi.com/* // @include *://m.iqiyi.com/kszt/* // @include *://m.youku.com/video/* // @include *://m.mgtv.com/b/* // @include *://m.tv.sohu.com/v/* // @include *://m.film.sohu.com/album/* // @include *://m.pptv.com/show/* // @include *://m.bilibili.com/anime/* // @include *://m.bilibili.com/video/* // @include *://m.bilibili.com/bangumi/play/* // @grant GM_addStyle // @grant GM_openInTab // @grant GM_getValue // @grant GM_setValue // @run-at document-idle // @charset UTF-8 // @license GPL License // ==/UserScript== (function() { 'use strict'; const ID = 'vip_jx_' + (Math.random() * 1e8 | 0); const FK = "flag_vip", AK = "auto_player_key" + location.host, VK = "auto_player_value_" + location.host; const isMob = /Mobi|Android|iPhone|iPad/i.test(navigator.userAgent); const apis = [ {n:"虾米",u:"https://jx.xmflv.com/?url="},{n:"M1907",u:"https://im1907.top/?jx="}, {n:"2s0",u:"https://jx.2s0.cn/player/?url="},{n:"IK9",u:"https://yparse.ik9.cc/index.php?url="}, {n:"777",u:"https://www.huaqi.live/?url="},{n:"789解析",u:"https://jiexi.789jiexi.com/?url="}, {n:"爱豆",u:"https://jx.aidouer.net/?url="},{n:"芒果",u:"https://jx.m3u8.tv/jiexi/?url="}, {n:"七哥",u:"https://jx.nnxv.cn/tv.php?url="},{n:"playerjy",u:"https://jx.playerjy.com/?url="}, {n:"咸鱼TV",u:"https://jx.xymp4.cc/?url="},{n:"973解析",u:"https://jx.973973.xyz/?url="}, {n:"IK",u:"https://pl.aszzys.com/player/ec.php?code=ikm3u8&if=1&url="}, {n:"!后面重复或不可用",u:""}, {n:"ckplayer",u:"https://www.ckplayer.vip/jiexi/?url="},{n:"playm3u8",u:"https://www.playm3u8.cn/jiexi.php?url="}, {n:"夜幕",u:"https://www.yemu.xyz/?url="},{n:"盘古",u:"https://www.pangujiexi.com/jiexi/?url="}, {n:"8090",u:"https://www.8090g.cn/?url="},{n:"芒果TV1",u:"https://video.isyour.love/player/getplayer?url="}, {n:"FF",u:"https://pl.aszzys.com/player/ec.php?code=ffm3u8&if=1&url="}, {n:"HM",u:"https://pl.aszzys.com/player/ec.php?code=heimuer&if=1&url="}, {n:"LZ",u:"https://pl.aszzys.com/player/ec.php?code=lzm3u8&if=1&url="}, {n:"七七云解析",u:"https://jx.77flv.cc/?url="},{n:"臻享视听",u:"https://player.maqq.cn/?url="} ]; const hosts = [ ["v.qq.com","#mod_player,#player-container,.container-player,.txp-player-container"], ["m.v.qq.com",".mod_player,#player"],["w.mgtv.com","#mgtv-player-wrap"], ["www.mgtv.com","#mgtv-player-wrap"],["m.mgtv.com",".video-area"], ["www.bilibili.com","#player_module,#bilibiliPlayer,#bilibili-player"], ["m.bilibili.com",".player-wrapper,.player-container,.mplayer"], ["www.iqiyi.com","#video"],["m.iqiyi.com",".m-video-player-wrap,iqpdiv.iqp-player"], ["www.iq.com",".intl-video-wrap"], ["v.youku.com","#player,#playerMouseWheel,.youku-player,.player-container"], ["m.youku.com","#player,.h5-detail-player"],["tv.sohu.com","#player"], ["film.sohu.com","#playerWrap"],["www.le.com","#le_playbox"], ["video.tudou.com",".td-playbox"],["v.pptv.com","#pptv_playpage_box"], ["vip.pptv.com",".w-video"],["www.wasu.cn","#flashContent"], ["www.acfun.cn","#player"],["vip.1905.com","#player,#vodPlayer"], ["www.1905.com","#player,#vodPlayer"] ]; const hc = hosts.find(c => location.host.includes(c[0])); if (!hc) return; const sel = hc[1]; let autoOn = GM_getValue(AK, null), autoIdx = GM_getValue(VK, 0), flag = GM_getValue(FK, null); function waitEl(s, cb) { const el = document.querySelector(s); if (el) return cb(el); const o = new MutationObserver(() => { const el = document.querySelector(s); if (el) { o.disconnect(); cb(el); } }); o.observe(document.body, {childList: true, subtree: true}); const t = setTimeout(() => { o.disconnect(); cb(null); }, 5000); return () => { clearTimeout(t); o.disconnect(); }; } // ✅ 优化后的CSS:修复鼠标事件响应问题 + Grid布局 + Flex模式按钮 GM_addStyle(` /* 🔧 悬浮按钮主容器:强制脱离文档流 + 最高层级 + 事件穿透保护 */ #${ID}{ cursor:pointer; position:fixed!important; top:120px!important; left:0!important; z-index:2147483647!important; text-align:left; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; background:rgba(15, 23, 42, 0.95); border-radius:14px; padding:5px; box-shadow:0 8px 32px rgba(0,0,0,0.5),inset 0 1px 1px rgba(255,255,255,0.05); border:1px solid rgba(148, 163, 184, 0.15); transform:translateZ(0)!important; will-change: transform!important; isolation:isolate!important; pointer-events:auto!important; contain: none!important; } /* 🔧 确保所有子元素事件可响应 */ #${ID} * { pointer-events: auto!important; box-sizing: border-box; } #${ID} .cb, #${ID} .vi, #${ID} .vl, #${ID} li, #${ID} .mode-btn, #${ID} .ai { pointer-events: auto!important; transform: translateZ(0); } #${ID} .cb{ width:36px;height:36px; background:linear-gradient(135deg,#2563eb,#3b82f6); box-shadow:0 4px 12px rgba(37, 99, 235, 0.35),inset 0 1px 2px rgba(255,255,255,0.15); border-radius:10px;margin:0; display:flex;align-items:center;justify-content:center; transition:transform .25s cubic-bezier(0.4, 0, 0.2, 1),box-shadow .25s ease,filter .25s ease; border:none; position: relative; z-index: 1; } #${ID} #vip_auto{margin-top:5px} #${ID} .cb:hover{transform:scale(1.08);filter:brightness(1.15);box-shadow:0 6px 18px rgba(37, 99, 235, 0.5)} #${ID} .vt{font-weight:bold;font-size:15px;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,0.3),0 0 8px rgba(59,130,246,0.3);letter-spacing:.5px; position: relative; z-index: 1;} #${ID} .vt-v{color:#bfdbfe}#${ID} .vt-p{color:#93c5fd} #${ID} .ai{fill:#94a3b8;width:15px;height:15px;transition:fill .3s ease,transform .3s ease;margin-right:3px; position: relative; z-index: 1;} #${ID} .ai.on{fill:#22c55e;transform:rotate(360deg)} /* 🔧 菜单面板:确保不被裁剪 */ #${ID} .vl{ display:none;position:absolute;border-radius:14px;left:46px;top:0; background:rgba(15, 23, 42, 0.98); border:1px solid rgba(148, 163, 184, 0.15); padding:12px;width:340px;max-height:420px;overflow-y:auto; box-shadow:0 16px 48px rgba(0,0,0,0.65); opacity:0;transform:translateX(-8px) scale(0.97); transition:opacity .25s ease,transform .25s cubic-bezier(0.4, 0, 0.2, 1); z-index: 2; pointer-events: auto!important; } #${ID} .vi.active .vl{display:block;opacity:1;transform:translateX(0) scale(1)} #${ID} .vl h3{font-size:13px;font-weight:600;color:#e2e8f0;text-transform:uppercase;letter-spacing:.8px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid rgba(148,163,184,0.12)} #${ID} .mode-section{display:flex;gap:6px;margin-bottom:10px} #${ID} .vl .mode-btn{ flex:1;display:inline-flex;align-items:center;justify-content:center; height:28px;border-radius:7px;font-size:11.5px;font-weight:600; color:#e2e8f0;background:linear-gradient(135deg,rgba(51,65,85,0.7),rgba(30,41,59,0.7)); border:1px solid rgba(148, 163, 184, 0.2);cursor:pointer; transition:transform .15s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease; box-shadow:0 2px 6px rgba(0,0,0,0.12);text-align:center;line-height:1.3; white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;padding:0 5px;position:relative; z-index: 1; } #${ID} .vl .mode-btn::after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(255,255,255,0.3);transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease;pointer-events:none} #${ID} .vl .mode-btn:hover{background:linear-gradient(135deg,rgba(59,130,246,0.25),rgba(37,99,235,0.2));border-color:rgba(96,165,250,0.5);transform:translateY(-1px);box-shadow:0 4px 12px rgba(37,99,235,0.25);color:#fff} #${ID} .vl .mode-btn:active{transform:scale(0.95)!important;box-shadow:0 1px 3px rgba(0,0,0,0.15)} #${ID} .vl .mode-btn:active::after{width:200px;height:200px;opacity:0} #${ID} .vl .mode-btn.active{background:linear-gradient(135deg,#2563eb,#3b82f6)!important;border-color:rgba(96,165,250,0.7)!important;color:#fff!important;box-shadow:0 0 20px rgba(37,99,235,0.5),0 4px 12px rgba(37,99,235,0.35)!important;font-weight:700;transform:scale(1.02);animation:btnPulse .3s ease} @keyframes btnPulse{0%{box-shadow:0 0 0 0 rgba(37,99,235,0.5)}70%{box-shadow:0 0 0 8px rgba(37,99,235,0)}100%{box-shadow:0 0 20px rgba(37,99,235,0.5)}} #${ID} .vl>div[data-m]{transition:opacity .25s ease,transform .25s ease} #${ID} .vl>div[data-m].fade-out{opacity:0;transform:translateX(-10px)} #${ID} .vl>div[data-m].fade-in{opacity:1;transform:translateX(0)} #${ID} .vl ul{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-block:0.5em;padding:0;overflow:hidden} #${ID} .vl li{ font-size:11.5px;color:#cbd5e1;text-align:center;line-height:26px; border:1px solid rgba(71,85,105,0.35);padding:0 5px;border-radius:8px; overflow:hidden;white-space:nowrap;text-overflow:ellipsis; transition:transform .2s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease,color .2s ease; background:linear-gradient(135deg,rgba(51,65,85,0.75),rgba(30,41,59,0.75)); pointer-events:all;cursor:pointer;font-weight:500;letter-spacing:.2px; box-sizing:border-box;float:none!important;width:auto!important;margin:0!important; position: relative; z-index: 1; } #${ID} .vl li:hover{color:#f1f5f9;border-color:rgba(96,165,250,0.55);background:linear-gradient(135deg,rgba(59,130,246,0.25),rgba(37,99,235,0.2));transform:translateY(-2px);box-shadow:0 6px 16px rgba(37,99,235,0.25);text-decoration:none} #${ID} li.sel{color:#fff!important;border-color:rgba(59,130,246,0.7)!important;background:linear-gradient(135deg,#2563eb,#3b82f6)!important;box-shadow:0 0 20px rgba(37,99,235,0.5),0 4px 12px rgba(37,99,235,0.3);font-weight:700;transform:scale(1.02)} #${ID} .vl::-webkit-scrollbar{width:5px} #${ID} .vl::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(100,116,139,0.45),rgba(71,85,105,0.45));border-radius:3px} #${ID} .vl::-webkit-scrollbar-track{background:transparent} /* 🔧 兜底:视频区域样式修复 */ body.vip-active video, body.vip-active .txp-player-container video, body.vip-active txpdiv, body.vip-active .youku-layer-logo, body.vip-active .youku-layer-mask, body.vip-active [class*="mask"], body.vip-active [class*="logo"] { visibility: hidden!important; opacity: 0!important; pointer-events: none!important; position: absolute!important; top: -9999px!important; } #vip_iframe_player { display: block!important; visibility: visible!important; opacity: 1!important; pointer-events: auto!important; } /* 🔧 终极兜底:确保 body 不裁剪 fixed 元素 */ body, html { overflow-x: visible!important; overflow-y: auto!important; } `); const lh = apis.map((a, i) => `