【改】 123 云盘会员青春版

(基于【123 云盘会员青春版】)修改显示 123 云盘身份信息为会员,支持超过 1GB 上限下载文件,支持使用视频倍速、关闭广告、修改头像、修改用户名等功能,自定义程度超高!(原版有的都有)需要修改头部代码来配置显示内容(×)点开右下角菜单可以设置(√)(非常简单!)

安裝腳本?
作者推薦腳本

您可能也會喜歡 123 云盘会员青春版

安裝腳本
  1. // ==UserScript==
  2. // @name 【改】 123 云盘会员青春版
  3. // @author 原作者:hmjz100、Qing,改版作者:.moli.
  4. // @namespace 原作者github:github.com/hmjz100,改版作者github:github.com/moli-ML
  5. // @version 1.0.4
  6. // @description (基于【123 云盘会员青春版】)修改显示 123 云盘身份信息为会员,支持超过 1GB 上限下载文件,支持使用视频倍速、关闭广告、修改头像、修改用户名等功能,自定义程度超高!(原版有的都有)需要修改头部代码来配置显示内容(×)点开右下角菜单可以设置(√)(非常简单!)
  7. // @icon data:image/x-icon;base64,AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAMMOAADDDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPt8WAD7fFgC+3xYB/t8WBf7fFhQ+3xYkPt8WMD7fFji+3xY9Px9Wfr8fVn7+3xY+/x9Wfv7fFj7/H1Z+/t8WPv8fVn7/H1Z+/x9Wfv8fVn7/H1Z+/x9Wfv7fVn7+31Z+/t9Wfv7fVn7/H1Z+/x9Wfv8fVn7+3xY+/x9Wfv7fFj7/H1Z+/x9Wfv8fVn7/H1Z+/x9Wfv8fVn7/H1Z+/x9Wfr7fFj1+3xY5Pt8WMP7fFiU+3xYVPt8WBn7fFgI+3xYAvt8WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+3xYAPt8WAD7fFgF+3xYJft8WIL7fFjV/H1Z8ft9Wff8fVn6+31Z/ft9Wf78fVn//H1Z//x9Wf/8fVn//H1Z//t9Wf/8fVn/+31Z//x9Wf/8fVn//H1Z//t9Wf/7fVn/+31Y//t9Wf/7fVn/+31Z//x9WP/8fVn/+31Z//x9Wf/7fVn//H1Z//t9Wf/8fVn/+31Z//x9Wf/8fVn//H1Z//t9Wf/8fVn/+31Z/vt9Wf38fVn7/H1Z9/x9WfL7fFjZ+3xYift8WCr7fFgG+3xYAft8WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+3xYAPt8WAH7fFgQ+3xYc/t8WNn8fVn1/H1Z/fx9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z/fx9Wfb7fFjd+3xYfPt8WBP7fFgC+3xYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+3xYAPt8WAL7fFgm+3xYrvt9We/7fVn9+31Z//t8Wf/7fFj/+3xY//t9Wf/7fVn/+31Z//t9Wf/7fFj/+3xY//t8Wf/7fVn/+31Z//t9Wf/7fFj/+3xY//t8Wf/7fVn/+31Z//t9Wf/7fVj/+3xY//t8WP/7fFj/+31Y//t9Wf/7fVn/+31Z//t8Wf/7fFj/+3xY//t9Wf/7fVn/+31Z//t8Wf/7fFj/+3xY//t9Wf/7fVn/+31Z//t9Wf/7fFj/+3xY//t8Wf/7fVn/+31Z/vt9WfD7fFi2+3xYLft8WAP7fFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+3xYAPt8WAL7fFgx+3xYxvt9Wff7fFj/+3xY//t8WP/7fVn/+3xY//t8WP/7fVj/+31Z//t9Wf/7fVj/+3xY//t8WP/7fVn/+3xY//t8WP/7fFj/+31Z//t9WP/7fFj/+3xY//t8WP/7fVj/+31Y//t8WP/7fFj/+3xY//t9WP/7fFj/+3xY//t8WP/7fVj/+31Y//t9Wf/7fFj/+3xY//t8WP/7fVn/+3xY//t8WP/7fVj/+31Z//t9Wf/7fVj/+3xY//t8WP/7fVn/+3xY//t8WP/7fFj/+31Z+ft8WMz7fFg5+3xYA/t8WAAAAAAAAAAAAAAAAAAAAAAA+3xYAPt8WAH7fFgp+3xYxvx9WPn8fVj//H1Y//x9Wf/8fVj//H1Y//x9WP/8fVn//H1Y//x9WP/8fVj//H1Z//x9WP/8fVj//H1Y//x9Wf/8fVj//H1Y//x9WP/8fVn//H1Y//x9WP/8fVj//H1Z//x9WP/8fVj//H1Y//x9WP/8fVn//H1Y//x9WP/8fVj//H1Z//x9WP/8fVj//H1Y//x9Wf/8fVj//H1Y//x9WP/8fVn//H1Y//x9WP/8fVj//H1Z//x9WP/8fVj//H1Y//x9Wf/8fVj//H1Y//x9WP/8fVn7+3xYzft8WDH7fFgC+3xYAAAAAAAAAAAAAAAAAPt8WAH7fFgT+3xYtfx9Wfj7fVj//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//t9WP/8fVn//H1Z//t9Wf/8fVn//H1Z//x9Wf/8fVn/+31Y//x9Wf/8fVn//H1Z//x9Wf/7fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn/+31Z//x9Wf/7fVj//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//t9WP/8fVn//H1Z//t9Wf/8fVn//H1Z//x9Wf/8fVn/+31Y//x9Wf/8fVn//H1Z//x9Wfn7fFi++3xYGft8WAEAAAAAAAAAAPt8WAD7fFgG+3xYgfx9WfD8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z8/t8WI/7fFgG+3xYAAAAAAD7fFgC+3xYMft8WOD8fFn+/HxZ//x8Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fFn//HxZ//x8Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fFn//HxZ//x8Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fFn//HxZ//x8Wf77fFjk+3xYPPt8WAMAAAAA+3xYB/t8WJb7fFj3+3xY//t8WP/7fFj/+3xY//t8Wf/7fFj/+3xY//t8WP/7fFj/+3xZ//t8WP/7fFn/+3xZ//t8Wf/7fFn/+3xY//t8WP/7fFj/+3xY//t8Wf/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8Wf/7fFj/+3xY//t8WP/7fFj/+3xZ//t8WP/7fFn/+3xZ//t8Wf/7fFn/+3xY//t8WP/7fFj/+3xY//t8Wf/7fFj/+3xY//t8WP/7fFj/+3xY+Pt8WKT7fFgI+3xYAft8WCL7fFjg/HxY/vx8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP77fFnm+3xYLft8WAX7fFhj/HxY8/x8Wf/7fFj/+3xY//x8Wf/7fFj/+3xZ//x8WP/8fFj/+3xZ//x8Wf/8fFj//HxZ//x8Wf/8fFn//HxZ//x8WP/8fFn/+3xZ//x8WP/8fFn/+3xZ//t8WP/8fFj//HxY//t8WP/8fFj//HxY//x8WP/8fFj//HxZ//x8WP/8fFj//HxY//x8WP/7fFj//HxY//x8Wf/7fFj/+3xZ//x8WP/8fFj/+3xZ//x8Wf/8fFj//HxZ//x8Wf/8fFn//HxZ//x8WP/8fFn/+3xZ//x8WP/8fFn/+3xZ//t8WP/8fFj/+3xY//t8WP/8fFn//HxY9Pt8WHL7fFgJ+3xYovt8Wfn8fFn//HxZ//t8Wf/8fFn/+3xY//x8Wf/8fVn/+3xY//x8Wf/8fFn//H1Z//x8Wf/7fFn/+3xZ//t8Wf/7fFn//HxZ//x8Wf/7fFj//HxZ//x8Wf/7fFj//H1Y//x8Wf/8fFn//HxZ//x8Wf/8fFn//HxZ//x8Wf/8fFn/+3xZ//x8Wf/8fFn/+3xZ//t8Wf/8fFn/+3xY//x8Wf/8fVn/+3xY//x8Wf/8fFn//H1Z//x8Wf/7fFn/+3xZ//t8Wf/7fFn//HxZ//x8Wf/7fFj//HxZ//x8Wf/7fFj//H1Z//x8Wf/8fFn//HxZ//x9Wfr7fFix+3xYDPt8WND7fVj9+31Z//t9WP/7fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVn/+31Y//t9WP/7fVn/+31Y//t9WP/7fVj/+31Y//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Y//t9WP/7fVn/+31Z//t9Wf/7fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVn/+31Y//t9WP/7fVn/+31Y//t9WP/7fVj/+31Y//t9Wf/7fVn++3xY3Pt8WBn7fFjo/H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9WO37fFgm+3xY7/t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFjw+3xYLPx8WPD8fVn//H1Z//x9Wf/8fVj++3xZw/t8WK77fFit+3xYrft8WK37fFis/HxY2Px8WPr8fFj/+3xY3/t8WLb7fFis+3xYrft8WK37fFit+3xYrft8WK37fFit+3xYrft8WK37fFit+3xYrft8WK37fFit+3xYrft8WK37fFit+3xYrft8WKv7fFjC/HxY7/x9WP/8fFj//HxY5/t8WLb7fFis+3xYrft8WK37fFit+3xYrft8WK37fFit+3xYr/t8WLP7fFi8+3xYzPt8WOf7fFj//HxY//x8WP/8fVj//H1Y//x8WP/8fVj//H1Z//x9Wf/8fVn//HxY8ft8WCz7fVjw/H1Y//t9WP/7fVj//H1Y/Pt8WV77fFgn+3xYI/t8WCP7fFgj+3xYIvx9WZb8fVjx+31Y//t8WKn7fFg7+3xYIft8WCP7fFgj+3xYI/t8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Wf/7fVn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+31Z//t9Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFnk+3xYXvt8WAAAAAAAAAAAAPt8WAD7fFgD+3xYOft8Wfv7fFn/+3xZ//t8Wf/7fFnx+3xYLPx8WfD8fFn//HxZ//x8Wf/8fVn7+3xZRPt8WQX7fFkAAAAAAAAAAAD8fFkA/HxZhfx9We/8fFn/+3xYoft8WB77fFgAAAAAAAAAAAD7fFgA+3xYSft8WdP8fFn//HxZ//x9Wf/8fVn//HxZ//x8Wf/8fFn//HxZ//x8Wf/8fFn//HxZ//x8Wf/8fFn//HxZ//x8Wf/8fVn//H1Z//x8Wf/8fFn//HxZ//x8Wf/8fFn//HxZ//x8Wf/8fFn//HxZ//x8Wf/8fFn//H1Z6vt8WHX7fFgAAAAAAAAAAAD7fFgA+3xYBft8WEL8fVn7/HxZ//x8Wf/8fFn//HxZ8ft8WCz7fFjw+3xY//t8WP/7fFj/+3xY+/t8WUT7fFkF+3xZAAAAAAAAAAAA/H1YAPx9WIX8fFjv+3xY//t8WLD7fFgj+3xYAAAAAAAAAAAA+3xYAPt8WCf7fFjB+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WOD7fFhL+3xYAAAAAAAAAAAA+3xYAPt8WAn7fFhi+3xY/Pt8WP/7fFj/+3xY//t8WPH7fFgs+3xY8Pt8Wf/7fFn/+3xY//t8WPv7fFlE+3xZBft8WQAAAAAAAAAAAPx9WQD8fVmF+3xZ7/t8Wf/7fFjM+3xYLPt8WAAAAAAAAAAAAPt8WAD7fFgF+3xYd/t8WOf7fFj/+3xZ//t8WP/7fFj/+3xY//t8Wf/7fFj/+3xY//t8WP/7fFj/+3xY//t8Wf/7fFj/+3xY//t8WP/7fFn/+3xZ//t8WP/7fFj/+3xY//t8WP/7fFn/+3xZ//t8WP/7fFj/+3xY//t8WOn7fFiG+3xYEft8WAAAAAAAAAAAAPt8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WO/7fFj/+3xY//t8WP/7fFj/+3xY8ft8WCz8fVjw/H1Y//x9WP/8fVj//H1Y+/t8WET7fFkF+3xZAAAAAAAAAAAA/H1ZAPx9WYX8fVnv/H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/7fVj2+3xYkft8WB37fFgAAAAAAAAAAAD7fFgA+ntXAvt8WHn7fFj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//t9WP/7fFj6+3xY0/t8WHT7fFgM+3xYAAAAAAAAAAAA+3xYAPt8WBb7fFi1/HxY/fx9WP/8fVj//H1Y//x9WPH7fFgs+31Z8Pt9Wf/7fVn/+31Z//t9Wfv7fFlE+3xYBft8WAAAAAAAAAAAAPx9WQD8fVmF+31Z7/t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wdn7fFhO+3xYAAAAAAAAAAAA+XpWAPt8WAD7fFhp+3xY//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fFjd+3xYQPt8WAAAAAAAAAAAAPt8WAD7fFgL+3xYcPt9Wfz7fVn/+31Z//t9Wf/7fVnx+3xYLPx9WfD8fVj//H1Z//x9Wf/8fVn7+3xZRPt8WQX7fFkAAAAAAAAAAAD7fFgA+3xYhfx9WO/8fVn//H1Z//x9Wf/8fVn//H1Z//x9WP/8fVj//H1Z//x9Wf/8fVn//H1Y//x9Wf/8fVn//H1Z//x9Wf/8fVno+3xYXPt8WAAAAAAAAAAAAAAAAAD7fFgA+3xYZPt8WPr8fVn//H1Z//x9WP/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Y6Pt8WGz7fFgAAAAAAAAAAAD7fFgA+3xYBvt8WEv8fVn7/H1Z//x9Wf/8fVj//H1Z8ft8WCz8fVnw/H1Z//x9Wf/8fVn//H1Z+/t8WET7fFgF+3xYAAAAAAAAAAAA/HxZAPx8WYX8fVnv/H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9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WDP7fFg/+3xYY/t8WK77fFjv+3xY//t8WP/7fFj/+3xY//t8WP/7fFjA+3xYQfx9WSf8fVkp/H1ZKfx9WSn8fVkp/H1ZKfx9WSn8fVkp/H1YKft8WCv7fFgv+3xYN/t8WFL7fFiV+3xY6vt8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFjx+3xYK/x8WPD8fFj//HxY//x8WP/8fFj++3xZy/x9Wbn8fVm4/H1ZuPx9Wbj8fVm4/H1Z3fx8WPr8fFj//HxY+/x8WMj8fVm3/H1ZuPx9Wbj8fVm4/H1ZuPx9Wbj8fVm4/H1ZuPx9Wbj8fVi4+3xYuft8WMD7fFjS+3xY7fx8WP78fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY6vx8WMD8fVm3/H1ZuPx9Wbj8fVm4/H1ZuPx9Wbj8fVm4/H1YuPx9WLn7fFi++3xYx/t8WNz7fFj7/HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY8ft8WCX8fFnu/HxY//x8WP/8fFj//HxY//x8Wf/8fFj//HxY//x8WP/8fFj//H1Z//x8WP/8fFj//H1Z//x8WP/8fFj//H1Z//x8WP/8fFj//H1Z//x8WP/8fFj/+3xY//t8WP/8fFn//HxZ//x8Wf/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxZ//x8Wf/8fFj//HxY//x8WP/8fFj//H1Z//x8WP/8fFj//H1Z//x8WP/8fFj//H1Z//x8WP/8fFj//H1Z//x8WP/8fFj/+3xY//x8WP/8fFn//HxY//x8Wf/8fFj//HxY//x8WfD7fFgX+3xY5ft9WP77fVj/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVj/+31Z//t9WP/7fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Z//t9WP/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9WP/7fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Z//t9WP/7fVn/+31Y//t9Wf/7fVj/+31Z//t9Wf/7fVn/+31Y//t9WP/7fVjr+3xYDPt8WM38fVn8/H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn9+3xY2vt8WAn7fFie+3xY+Pt8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t9WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t9WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY//t8WP/7fFj/+3xY+vt8WK37fFgF+3xYXvt9WPL7fVj/+3xY//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fFj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+3xY//t9WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t8WP/7fVj/+31Y//t9WP/7fVj/+31Y//t8WP/7fFj/+31Y//t9WPT7fFhs+3xYAft8WB77fFjd/H1Y/vx9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fFj//H1Y//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fFj//H1Y//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP/8fVj//H1Y//x9WP77fFjj+3xYKQAAAAD7fFgH+3xYkPt9Wfb7fVj//H1Y//t9WP/7fVj/+31Z//t9WP/7fVj/+31Y//x9Wf/7fVj/+31Z//t9WP/7fVj/+31Z//t9WP/8fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj//H1Y//t9WP/7fVn/+31Z//t9Wf/7fVn/+31Y//t9Wf/7fVn/+31Z//t9Wf/7fVj//H1Y//t9WP/7fVj/+31Z//t9WP/7fVj/+31Y//x9Wf/7fVj/+31Z//t9WP/7fVj/+31Z//t9WP/8fVn/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj//H1Y//t9WP/7fVn4+3xYnvt8WAcAAAAA+3xYAvt8WCv7fFjc+31Z/ft9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn++3xY4vt8WDb7fFgCAAAAAPt8WAD7fFgF+3xYefx9We78fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z//x9Wf/8fVn//H1Z8ft8WIb7fFgG+3xYAAAAAAAAAAAA+3xYAPt8WBD7fFiu+31Z9vt9Wf/7fVn/+31Z//t9Wf/7fVn/+3xZ//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+3xZ//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t8Wf/7fVn/+3xZ//t8Wf/7fVn/+31Z//t9Wf/7fFn/+3xZ//t9Wf/7fFn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+3xZ//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z//t9Wf/7fVn/+3xZ//t9Wf/7fVn/+31Z//t9Wf/7fVn/+31Z+Pt8WLf7fFgV+3xYAQAAAAAAAAAAAAAAAPt8WAD7fFgB+3xYI/t8WMD8fFj4/HxY//x8Wf/8fFj//HxZ//x8WP/8fFj//HxY//x8WP/8fFn//HxZ//x8WP/8fFj//HxY//x8WP/8fFn//HxY//x8Wf/8fFj//HxY//x8WP/8fFj//HxY//x8Wf/8fFj//HxY//x8WP/8fFj//HxY//x8Wf/8fFn//HxY//x8WP/8fFj//HxY//x8Wf/8fFj//HxZ//x8WP/8fFj//HxY//x8WP/8fFn//HxZ//x8WP/8fFj//HxY//x8WP/8fFn//HxY//x8Wf/8fFj//HxY+vt8WMj7fFgr+3xYAvt8WAAAAAAAAAAAAAAAAAAAAAAA+3xYAPt8WAL7fFgr+3xYvvx8WPX8fFn+/HxY//x8WP/8fFj//HxY//x8WP/8fFn//HxZ//x8Wf/8fFn//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY//x8WP/8fFn//HxY//x8WP/8fFj//HxY//x8WP/8fFn//HxZ//x8Wf/8fFn//HxY//x8WP/8fFj//HxY//x8WP/8fFj//HxY9/t8WMT7fFgx+3xYAvt8WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7fFgA+3xYAvt8WCD7fFil+3xZ6/t8Wf37fFn/+3xZ//t8Wf/7fFn/+31Z//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+31Z//t8Wf/7fFn/+3xZ//t8Wf/7fFn/+3xZ//t8Wf/7fFn9+3xZ7ft8WK77fFgm+3xYAvt8WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPt8WAD7fFgB+3xYC/t8WGf7fFjT+31Y8/t9WPz7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+3xY//t9WP/7fFj/+31Y//t8WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t8WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+31Y//t9WP/7fVj/+3xY//t9WP37fFj0+3xY1vt8WHD7fFgO+3xYAft8WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+nxYAPp8WAD7fFgE+3xYHft8WHb7fFjM/H1Z7fx9WfX8fVn5/H1Z/Px9Wf38fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/vx9Wf78fVn+/H1Z/fx9Wfz8fVn5/H1Z9vx9We77fFjR+3xYfPt8WCH7fFgF+3xYAPt8WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+3xYAPt8WAH7fFgF+3xYD/t8WED7fFh7+3xYqPt8WMf7fFjZ/H1Z3/x9WeD8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/x9Wd/8fVnf/H1Z3/t8WNv7fFjK+3xYrPt8WH77fFhF+3xYEvt8WAb7fFgB+3xYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+ntXAPp7VwD7fFgD+3xYB/t8WAr7fFgM+3xYDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ38fVkN/H1ZDfx9WQ37fFgN+3xYDPt8WAr7fFgH+3xYBPt8WAH7fFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAH/8AAAAAAAAH/gAAAAAAAAP8AAAAAAAAAfgAAAAAAAAA8AAAAAAAAABwAAAAAAAAAGAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPB//+B/+AAA8H//4H/+AADwf//gf/8AAPB4AAAAH4AA8HgAAAAPgADweAAAAAeAAPB4AAAAB4AA8HgAAAAHgADweAAAAAeAAPB4AAAAB4AA8HwAAAAPAADwPgAAAD4AAPA//wAf/AAA8B//gB/8AADwB//AH/wAAPAAB+AAPgAA8AAD4AAPAADwAAHgAAeAAPAAAfAAB4AA8AAB8AAHgADwAAHwAAeAAPAAAeAAB4AA8AAD4AAPgADwAA/gAB8AAPB//8B//wAA8H//gH/+AADwf/4Af/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAMAAAAAAAAABwAAAAAAAAAHgAAAAAAAAA/AAAAAAAAAH+AAAAAAAAA/8AAAAAAAAH/8AAAAAAAB//+AAAAAAA/8=
  8. // @license MIT
  9. // @match *://*.123pan.com/*
  10. // @match *://*.123pan.cn/*
  11. // @match *://*.123684.com/*
  12. // @match *://*.123865.com/*
  13. // @match *://*.123952.com/*
  14. // @grant unsafeWindow
  15. // @run-at document-start
  16. // @require https://unpkg.com/jquery@3.6.0/dist/jquery.min.js
  17. // ==/UserScript==
  18.  
  19. (function () {
  20. var defaultConfig = {
  21. // 以下设置项中,常规项目(就是以//开头注释的项目)除非特殊说明,否则一般 0 为关闭,1 为开启
  22. vip: 1, // 开启会员修改(总开关)
  23. svip: 1, // 显示为超级会员,建议 1
  24. ad: 1, // 关闭广告,建议 1
  25.  
  26. // 以下是自定义项目(以/*开头注释的项目),修改也非常简单
  27. /*
  28. 自定义用户名与头像还有邮箱、手机号、用户 ID,留空则使用已登录(不可用)账号数据
  29. */
  30. name: "百闻不如一见",
  31. photo: "https://cdn.auth0.com/avatars/bw.png",
  32. mail: "", // 最好不改,我怕影响支付
  33. phone: "", // 最好不改,我怕影响支付
  34. id: "", // 最好不改,我怕影响支付
  35. /* 成长容量等级,最高可叠加 128 级 */
  36. level: 128,
  37. /*
  38. 会员过期时间 格式为Unix时间戳,可留空为""
  39. 1638288000 - 2021-11-31 00:00:00 (123上线时)
  40. 2147483648 - 2038-01-19 11:14:08 (2038问题时)
  41. 253402185600 - 9999-12-31 00:00:00 (终极时)
  42. */
  43. endtime: 253402185600,
  44.  
  45. // 以下的常规项目(就是以//开头注释的项目)均为独立功能,不受总开关控制
  46. debug:0, // 显示本脚本的调试信息到 JavaScript 控制台中,建议 0,另外,1 显示所有,2 仅显示基本,3 仅显示修改其他 Header
  47. }
  48. // 尝试从localStorage读取配置,如果没有则使用默认配置
  49. const savedConfig = localStorage.getItem('panMemberConfig');
  50. var user = savedConfig ? JSON.parse(savedConfig) : {...defaultConfig};
  51.  
  52.  
  53. // 确保所有字段都存在,缺失的用默认值填充
  54. Object.keys(defaultConfig).forEach(key => {
  55. if (!(key in user)) {
  56. user[key] = defaultConfig[key];
  57. }
  58. });
  59. var style =`
  60. <style>
  61. :root {
  62. --primary-color: #6a11cb;
  63. --secondary-color: #2575fc;
  64. --bg-color: #f4f4f4;
  65. --text-color: #333;
  66. }
  67.  
  68.  
  69. #panMemberConfigContainer * {
  70. box-sizing: border-box;
  71. scrollbar-width: thin;
  72. scrollbar-color: var(--primary-color) transparent;
  73. }
  74.  
  75.  
  76. #panMemberConfigContainer {
  77. position: fixed;
  78. top: 50%;
  79. left: 50%;
  80. transform: translate(-50%, -50%);
  81. width: 680px;
  82. background: white;
  83. border-radius: 24px;
  84. box-shadow: 0 25px 50px rgba(0,0,0,0.2);
  85. z-index: 9999;
  86. display: none;
  87. padding: 40px;
  88. color: var(--text-color);
  89. font-family: 'PingFang SC', 'Helvetica Neue', Arial, sans-serif;
  90. max-height: 85vh;
  91. overflow-y: auto;
  92. border: 2px solid var(--primary-color);
  93. }
  94.  
  95.  
  96. #panMemberConfigContainer::before {
  97. content: '';
  98. position: absolute;
  99. top: -10px;
  100. left: -10px;
  101. right: -10px;
  102. bottom: -10px;
  103. background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
  104. z-index: -1;
  105. filter: blur(20px);
  106. opacity: 0.6;
  107. border-radius: 34px;
  108. }
  109.  
  110.  
  111. #panMemberConfigContainer h2 {
  112. text-align: center;
  113. color: var(--primary-color);
  114. margin-bottom: 30px;
  115. font-size: 28px;
  116. font-weight: 700;
  117. display: flex;
  118. align-items: center;
  119. justify-content: center;
  120. }
  121.  
  122.  
  123. #panMemberConfigContainer h2::before,
  124. #panMemberConfigContainer h2::after {
  125. content: '';
  126. flex-grow: 1;
  127. height: 2px;
  128. background: linear-gradient(to right, transparent, var(--primary-color), transparent);
  129. margin: 0 20px;
  130. }
  131.  
  132.  
  133. .config-section {
  134. background: white;
  135. border-radius: 16px;
  136. padding: 20px;
  137. margin-bottom: 20px;
  138. box-shadow: 0 10px 20px rgba(0,0,0,0.05);
  139. }
  140.  
  141.  
  142. .config-section-title {
  143. font-size: 18px;
  144. color: var(--primary-color);
  145. margin-bottom: 15px;
  146. font-weight: 600;
  147. display: flex;
  148. align-items: center;
  149. }
  150.  
  151.  
  152. .config-section-title::before {
  153. content: '•';
  154. color: var(--primary-color);
  155. margin-right: 10px;
  156. font-size: 24px;
  157. }
  158.  
  159.  
  160. .config-grid {
  161. display: grid;
  162. grid-template-columns: repeat(2, 1fr);
  163. gap: 15px;
  164. }
  165.  
  166.  
  167. .config-switch {
  168. display: flex;
  169. align-items: center;
  170. background-color: #f8f9fa;
  171. padding: 12px;
  172. border-radius: 12px;
  173. transition: all 0.3s ease;
  174. }
  175.  
  176.  
  177. .config-switch:hover {
  178. background-color: #e9ecef;
  179. }
  180.  
  181.  
  182. .config-switch input[type="checkbox"] {
  183. appearance: none;
  184. width: 24px;
  185. height: 24px;
  186. background-color: #e9ecef;
  187. border-radius: 6px;
  188. margin-right: 12px;
  189. position: relative;
  190. cursor: pointer;
  191. transition: all 0.3s ease;
  192. }
  193.  
  194.  
  195. .config-switch input[type="checkbox"]:checked {
  196. background-color: var(--primary-color);
  197. }
  198.  
  199.  
  200. .config-switch input[type="checkbox"]:checked::after {
  201. content: '✔';
  202. position: absolute;
  203. top: 50%;
  204. left: 50%;
  205. transform: translate(-50%, -50%);
  206. color: white;
  207. font-size: 14px;
  208. }
  209.  
  210. /* 滑块开关样式 */
  211. .config-switch {
  212. display: flex;
  213. align-items: center;
  214. background-color: #f8f9fa;
  215. padding: 12px;
  216. border-radius: 12px;
  217. transition: all 0.3s ease;
  218. }
  219.  
  220.  
  221. .toggle-switch {
  222. position: relative;
  223. display: inline-block;
  224. width: 60px;
  225. height: 34px;
  226. margin-right: 12px;
  227. }
  228.  
  229.  
  230. .toggle-switch input {
  231. opacity: 0;
  232. width: 0;
  233. height: 0;
  234. }
  235.  
  236.  
  237. .slider {
  238. position: absolute;
  239. cursor: pointer;
  240. top: 0;
  241. left: 0;
  242. right: 0;
  243. bottom: 0;
  244. background-color: #ccc;
  245. transition: .4s;
  246. border-radius: 34px;
  247. }
  248.  
  249.  
  250. .slider:before {
  251. position: absolute;
  252. content: "";
  253. height: 26px;
  254. width: 26px;
  255. left: 4px;
  256. bottom: 4px;
  257. background-color: white;
  258. transition: .4s;
  259. border-radius: 50%;
  260. }
  261.  
  262.  
  263. input:checked + .slider {
  264. background-color: #2196F3; /* 蓝色 */
  265. }
  266.  
  267.  
  268. input:checked + .slider:before {
  269. transform: translateX(26px);
  270. }
  271.  
  272. .config-input {
  273. width: 100%;
  274. padding: 12px 15px;
  275. margin-bottom: 15px;
  276. background-color: #f8f9fa;
  277. border: 1px solid #e9ecef;
  278. border-radius: 12px;
  279. transition: all 0.3s ease;
  280. }
  281.  
  282.  
  283. .config-input:focus {
  284. outline: none;
  285. border-color: var(--primary-color);
  286. box-shadow: 0 0 0 3px rgba(106, 17, 203, 0.1);
  287. }
  288.  
  289.  
  290. .config-buttons {
  291. display: flex;
  292. justify-content: space-between;
  293. margin-top: 20px;
  294. }
  295.  
  296.  
  297. .config-btn {
  298. padding: 12px 25px;
  299. border: none;
  300. border-radius: 12px;
  301. cursor: pointer;
  302. font-weight: bold;
  303. transition: all 0.3s ease;
  304. font-size: 16px;
  305. }
  306.  
  307.  
  308. #saveConfig {
  309. background: linear-gradient(to right, var(--primary-color), var(--secondary-color));
  310. color: white;
  311. }
  312.  
  313.  
  314. #closeConfig {
  315. background-color: #f8f9fa;
  316. color: var(--text-color);
  317. }
  318.  
  319.  
  320. .config-btn:hover {
  321. transform: translateY(-3px);
  322. box-shadow: 0 4px 15px rgba(0,0,0,0.1);
  323. }
  324. </style>
  325. `
  326.  
  327. // 创建 style 标签
  328. var styleTag = document.createElement('style');
  329. styleTag.textContent = style;
  330. document.head.appendChild(styleTag);
  331.  
  332. // 创建配置窗口的 HTML
  333. var configHtml = `
  334. <div id="panMemberConfigContainer">
  335. <h2>🚀 百度网盘会员配置中心</h2>
  336.  
  337. <div class="config-section">
  338. <div class="config-section-title">基础设置</div>
  339. <div class="config-grid">
  340. <div class="config-switch">
  341. <label class="toggle-switch">
  342. <input type="checkbox" id="vipSwitch">
  343. <span class="slider"></span>
  344. </label>
  345. <label for="vipSwitch">开启会员修改</label>
  346. </div>
  347. <div class="config-switch">
  348. <label class="toggle-switch">
  349. <input type="checkbox" id="svipSwitch">
  350. <span class="slider"></span>
  351. </label>
  352. <label for="svipSwitch">显示超级会员</label>
  353. </div>
  354. <div class="config-switch">
  355. <label class="toggle-switch">
  356. <input type="checkbox" id="adSwitch">
  357. <span class="slider"></span>
  358. </label>
  359. <label for="adSwitch">关闭广告</label>
  360. </div>
  361. <div class="config-switch">
  362. <label class="toggle-switch">
  363. <input type="checkbox" id="debugSwitch">
  364. <span class="slider"></span>
  365. </label>
  366. <label for="debugSwitch">开启调试信息</label>
  367. </div>
  368. </div>
  369. </div>
  370.  
  371.  
  372. <div class="config-section">
  373. <div class="config-section-title">用户信息</div>
  374. <input type="text" id="nameInput" class="config-input" placeholder="自定义用户名" value="">
  375. <input type="text" id="photoInput" class="config-input" placeholder="头像链接" value="">
  376. </div>
  377. <div class="config-section">
  378. <div class="config-section-title">高级信息(谨慎修改)</div>
  379. <input type="email" id="mailInput" class="config-input" placeholder="邮箱(不建议修改)" value="">
  380. <input type="tel" id="phoneInput" class="config-input" placeholder="手机号(不建议修改)" value="">
  381. <input type="text" id="idInput" class="config-input" placeholder="用户ID(不建议修改)" value="">
  382. </div>
  383.  
  384.  
  385. <div class="config-section">
  386. <div class="config-section-title">高级设置</div>
  387. <div class="config-grid">
  388. <input type="number" id="levelInput" class="config-input" placeholder="容量等级(1-128)" min="1" max="128" value="">
  389. <select id="endtimeSelect" class="config-input">
  390. <option value="1638288000">2021-11-31 (普通版)</option>
  391. <option value="2147483648">2038-01-19 (长期版)</option>
  392. <option value="253402185600">9999-12-31 (终极版)</option>
  393. </select>
  394. </div>
  395. </div>
  396.  
  397.  
  398. <div class="config-buttons">
  399. <button id="saveConfig" class="config-btn">保存配置</button>
  400. <button id="closeConfig" class="config-btn">关闭</button>
  401. </div>
  402.  
  403.  
  404. <!-- 新增确认弹窗 -->
  405. <div id="confirmModal" class="modal">
  406. <div class="modal-content">
  407. <h3>确认保存配置</h3>
  408. <p>是否确定保存当前配置?</p>
  409. <div class="modal-buttons">
  410. <button id="confirmSave" class="config-btn confirm-btn">确认</button>
  411. <button id="cancelSave" class="config-btn cancel-btn">取消</button>
  412. </div>
  413. </div>
  414. </div>
  415. </div>
  416.  
  417. `;
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424. // 配置菜单交互逻辑
  425. window.addEventListener('load', () => {
  426. // 添加配置窗口到页面
  427. document.body.insertAdjacentHTML('beforeend', configHtml);
  428.  
  429.  
  430. // 创建配置按钮
  431. const configButton = document.createElement('div');
  432. configButton.innerHTML = '⚙️';
  433. configButton.style.cssText = `
  434. position: fixed;
  435. bottom: 20px;
  436. right: 20px;
  437. width: 50px;
  438. height: 50px;
  439. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  440. color: white;
  441. border-radius: 50%;
  442. display: flex;
  443. justify-content: center;
  444. align-items: center;
  445. font-size: 24px;
  446. cursor: pointer;
  447. box-shadow: 0 4px 6px rgba(0,0,0,0.2);
  448. z-index: 9998;
  449. transition: transform 0.3s ease;
  450. `;
  451.  
  452.  
  453. configButton.addEventListener('mouseenter', () => {
  454. configButton.style.transform = 'scale(1.1)';
  455. });
  456.  
  457.  
  458. configButton.addEventListener('mouseleave', () => {
  459. configButton.style.transform = 'scale(1)';
  460. });
  461.  
  462.  
  463. document.body.appendChild(configButton);
  464.  
  465.  
  466. // 配置窗口交互逻辑
  467. const configContainer = document.getElementById('panMemberConfigContainer');
  468. const saveConfigBtn = document.getElementById('saveConfig');
  469. const closeConfigBtn = document.getElementById('closeConfig');
  470. const confirmModal = document.getElementById('confirmModal');
  471. const confirmSaveBtn = document.getElementById('confirmSave');
  472. const cancelSaveBtn = document.getElementById('cancelSave');
  473.  
  474.  
  475. configButton.addEventListener('click', () => {
  476. configContainer.style.display = 'block';
  477. // 添加淡入动画
  478. configContainer.style.opacity = '0';
  479. configContainer.style.transform = 'translate(-50%, -50%) scale(0.7)';
  480. setTimeout(() => {
  481. configContainer.style.transition = 'all 0.3s ease';
  482. configContainer.style.opacity = '1';
  483. configContainer.style.transform = 'translate(-50%, -50%) scale(1)';
  484. }, 10);
  485. });
  486.  
  487.  
  488. closeConfigBtn.addEventListener('click', () => {
  489. configContainer.style.opacity = '0';
  490. configContainer.style.transform = 'translate(-50%, -50%) scale(0.7)';
  491. setTimeout(() => {
  492. configContainer.style.display = 'none';
  493. }, 300);
  494. });
  495.  
  496.  
  497. saveConfigBtn.addEventListener('click', () => {
  498. // 显示确认模态框
  499. confirmModal.style.display = 'block';
  500. confirmModal.style.opacity = '0';
  501. confirmModal.style.transform = 'scale(0.7)';
  502. setTimeout(() => {
  503. confirmModal.style.transition = 'all 0.3s ease';
  504. confirmModal.style.opacity = '1';
  505. confirmModal.style.transform = 'scale(1)';
  506. }, 10);
  507. });
  508.  
  509.  
  510. confirmSaveBtn.addEventListener('click', () => {
  511. // 执行保存逻辑
  512. user.vip = document.getElementById('vipSwitch').checked ? 1 : 0;
  513. user.svip = document.getElementById('svipSwitch').checked ? 1 : 0;
  514. user.ad = document.getElementById('adSwitch').checked ? 1 : 0;
  515. user.debug = document.getElementById('debugSwitch').checked ? 1 : 0;
  516.  
  517. user.name = document.getElementById('nameInput').value || '';
  518. user.photo = document.getElementById('photoInput').value || '';
  519.  
  520. // 新增字段处理
  521. user.mail = document.getElementById('mailInput').value || '';
  522. user.phone = document.getElementById('phoneInput').value || '';
  523. user.id = document.getElementById('idInput').value || '';
  524.  
  525. user.level = Number(document.getElementById('levelInput').value) || 128;
  526. user.endtime = Number(document.getElementById('endtimeSelect').value);
  527.  
  528.  
  529. // 保存到本地存储
  530. localStorage.setItem('panMemberConfig', JSON.stringify(user));
  531.  
  532.  
  533. // 关闭模态框
  534. confirmModal.style.opacity = '0';
  535. confirmModal.style.transform = 'scale(0.7)';
  536. setTimeout(() => {
  537. confirmModal.style.display = 'none';
  538. }, 300);
  539.  
  540.  
  541. // 关闭配置窗口
  542. configContainer.style.opacity = '0';
  543. configContainer.style.transform = 'translate(-50%, -50%) scale(0.7)';
  544. setTimeout(() => {
  545. configContainer.style.display = 'none';
  546. }, 300);
  547.  
  548.  
  549. // 显示保存成功提示
  550. const toast = document.createElement('div');
  551. toast.style.cssText = `
  552. position: fixed;
  553. top: 20px;
  554. left: 50%;
  555. transform: translateX(-50%);
  556. background-color: #4CAF50;
  557. color: white;
  558. padding: 15px 30px;
  559. border-radius: 10px;
  560. box-shadow: 0 4px 6px rgba(0,0,0,0.2);
  561. z-index: 10000;
  562. opacity: 0;
  563. transition: all 0.3s ease;
  564. `;
  565. toast.textContent = '配置已保存!刷新页面生效';
  566. document.body.appendChild(toast);
  567.  
  568.  
  569. // 触发显示和隐藏动画
  570. setTimeout(() => {
  571. toast.style.opacity = '1';
  572. toast.style.top = '30px';
  573. }, 10);
  574.  
  575.  
  576. setTimeout(() => {
  577. toast.style.opacity = '0';
  578. toast.style.top = '20px';
  579. setTimeout(() => {
  580. document.body.removeChild(toast);
  581. }, 300);
  582. }, 2000);
  583. });
  584.  
  585.  
  586. cancelSaveBtn.addEventListener('click', () => {
  587. // 关闭模态框
  588. confirmModal.style.opacity = '0';
  589. confirmModal.style.transform = 'scale(0.7)';
  590. setTimeout(() => {
  591. confirmModal.style.display = 'none';
  592. }, 300);
  593. });
  594.  
  595.  
  596. // 初始化配置
  597. document.getElementById('vipSwitch').checked = user.vip === 1;
  598. document.getElementById('svipSwitch').checked = user.svip === 1;
  599. document.getElementById('adSwitch').checked = user.ad === 1;
  600. document.getElementById('debugSwitch').checked = user.debug === 1;
  601. document.getElementById('nameInput').value = user.name || '';
  602. document.getElementById('photoInput').value = user.photo || '';
  603. document.getElementById('mailInput').value = user.mail || '';
  604. document.getElementById('levelInput').value = user.level || 128;
  605. document.getElementById('endtimeSelect').value = user.endtime || 253402185600;
  606. });
  607.  
  608.  
  609. var originalOpen = XMLHttpRequest.prototype.open;
  610. var originalSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
  611. var originalFetch = fetch;
  612.  
  613. unsafeWindow.XMLHttpRequest.prototype.open = function (method, url) {
  614. url = new URL(url, location.origin).href;
  615. this.url = url
  616. if (url.includes('api/user/info')) {
  617. // 用户信息
  618. if (user.vip === 1) this.addEventListener('readystatechange', function () {
  619. if (this.readyState === 4) {
  620. let res, oriRes
  621. try {
  622. res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
  623. } catch (e) {
  624. res = this.response, oriRes = this.response
  625. }
  626.  
  627. res.data.Vip = true // VIP
  628. res.data.VipLevel = user.svip ? 2 : 1 // SVIP
  629. if (user.ad === 1) res.data.IsShowAdvertisement = false // 广告
  630. if (user.endtime) {
  631. let time = new Date(user.endtime * 1000)
  632. let vipTime = new Date(1727539200 * 1000)
  633. let youngTime = new Date(1638288000 * 1000)
  634. res.data.VipExpire = time.toLocaleString() // 时间
  635. res.data.UserVipDetailInfos = [{
  636. VipDesc: user.svip === 1 ? "SVIP 会员" : "VIP 会员",
  637. TimeDesc: time.toLocaleDateString() + " 到期",
  638. IsUse: time >= new Date()
  639. }, {
  640. VipDesc: '韭菜收割包',
  641. TimeDesc: vipTime.toLocaleDateString() + " 生效",
  642. IsUse: vipTime <= new Date()
  643. }, {
  644. VipDesc: '青春创始包',
  645. TimeDesc: youngTime.toLocaleDateString() + " 生效",
  646. IsUse: youngTime <= new Date()
  647. }]
  648. }
  649. if (user.name) res.data.Nickname = user.name;
  650. if (user.photo) res.data.HeadImage = user.photo;
  651. if (user.mail) res.data.Mail = user.mail;
  652. if (user.phone) res.data.Passport = Number(user.phone);
  653. if (user.id) res.data.UID = Number(user.id);
  654. if (user.level) res.data.GrowSpaceAddCount = Number(user.level);
  655.  
  656. if (user.debug === 1 || user.debug === 2) console.log("【123 云盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
  657.  
  658. Object.defineProperty(this, "responseText", {
  659. writable: true,
  660. });
  661. Object.defineProperty(this, "response", {
  662. writable: true,
  663. });
  664. this.response = JSON.stringify(res)
  665. this.responseText = JSON.stringify(res)
  666. }
  667. })
  668. } else if (url.includes('file/download_info')) {
  669. // 个人页面的下载
  670. this.addEventListener('readystatechange', async function () {
  671. if (this.readyState === 4 && this.status === 200) {
  672. let res, oriRes
  673. try {
  674. res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
  675. } catch (e) {
  676. res = this.response, oriRes = this.response
  677. }
  678.  
  679. if (res.data && res.data.DownloadUrl) {
  680. let originURL = new URL(res.data.DownloadUrl)
  681.  
  682. if (originURL.origin.includes("web-pro")) {
  683. // 解密后的直链
  684. let directURL = new URL(decodeURIComponent(atob(originURL.searchParams.get('params'))), originURL.origin)
  685. directURL.searchParams.set('auto_redirect', 0)
  686.  
  687. // 修改原始链接
  688. originURL.searchParams.set('params', btoa(directURL.href))
  689.  
  690. // 最终得出链接
  691. res.data.DownloadUrl = originURL.href
  692.  
  693. if (user.debug === 1 || user.debug === 2) console.log("【123 云盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
  694. } else {
  695. originURL.searchParams.set('auto_redirect', 0)
  696.  
  697. let newURL = new URL('https://web-pro2.123952.com/download-v2/', originURL.origin)
  698. newURL.searchParams.set('params', btoa(encodeURI(originURL.href)))
  699. newURL.searchParams.set('is_s3', 0);
  700.  
  701. // 一定要解密,最终才能得出链接
  702. res.data.DownloadUrl = decodeURIComponent(newURL.href)
  703.  
  704. if (user.debug === 1 || user.debug === 2) console.log("【123 云盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
  705. }
  706. }
  707. Object.defineProperty(this, "responseText", {
  708. writable: true,
  709. });
  710. Object.defineProperty(this, "response", {
  711. writable: true,
  712. });
  713. this.response = JSON.stringify(res)
  714. this.responseText = JSON.stringify(res)
  715. }
  716. });
  717. } else if (url.includes('share/download/info')) {
  718. // 分享页面的下载
  719. this.addEventListener('readystatechange', async function () {
  720. if (this.readyState === 4 && this.status === 200) {
  721. let res, oriRes
  722. try {
  723. res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
  724. } catch (e) {
  725. res = this.response, oriRes = this.response
  726. }
  727.  
  728. if (res.data && res.data.DownloadURL) {
  729. let originURL = new URL(res.data.DownloadURL)
  730.  
  731. if (!originURL.origin.includes("web-pro")) {
  732. originURL.searchParams.set('auto_redirect', 0)
  733.  
  734. let newURL = new URL('https://web-pro2.123952.com/download-v2/', originURL.origin)
  735. newURL.searchParams.set('params', btoa(encodeURI(originURL.href)))
  736. newURL.searchParams.set('is_s3', 0);
  737.  
  738. // 一定要解密,最终才能得出链接
  739. res.data.DownloadURL = decodeURIComponent(newURL.href)
  740.  
  741. if (user.debug === 1 || user.debug === 2) console.log("【123 云盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
  742. }
  743. }
  744.  
  745. Object.defineProperty(this, "responseText", {
  746. writable: true,
  747. });
  748. Object.defineProperty(this, "response", {
  749. writable: true,
  750. });
  751. this.response = JSON.stringify(res)
  752. this.responseText = JSON.stringify(res)
  753. }
  754. });
  755. } else if (url.includes('file/batch_download_info')) {
  756. // 个人页面的打包下载
  757. this.addEventListener('readystatechange', function () {
  758. if (this.readyState === 4 && this.status === 200) {
  759. let res, oriRes
  760. try {
  761. res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
  762. } catch (e) {
  763. res = this.response, oriRes = this.response
  764. }
  765.  
  766. if (res.data && res.data.DownloadUrl) {
  767. let originURL = new URL(res.data.DownloadUrl)
  768.  
  769. if (originURL.origin.includes("web-pro")) {
  770. // 解密后的直链
  771. let directURL = new URL(decodeURIComponent(atob(originURL.searchParams.get('params'))), originURL.origin)
  772. directURL.searchParams.set('auto_redirect', 0)
  773.  
  774. // 修改原始链接
  775. originURL.searchParams.set('params', btoa(directURL.href))
  776.  
  777. // 最终得出链接
  778. res.data.DownloadUrl = originURL.href
  779.  
  780. if (user.debug === 1 || user.debug === 2) console.log("【123 云盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
  781. } else {
  782. originURL.searchParams.set('auto_redirect', 0)
  783.  
  784. let newURL = new URL('https://web-pro2.123952.com/download-v2/', originURL.origin)
  785. newURL.searchParams.set('params', btoa(encodeURI(originURL.href)))
  786. newURL.searchParams.set('is_s3', 0);
  787.  
  788. // 一定要解密,最终才能得出链接
  789. res.data.DownloadUrl = decodeURIComponent(newURL.href)
  790.  
  791. if (user.debug === 1 || user.debug === 2) console.log("【123 云盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
  792. }
  793. }
  794. Object.defineProperty(this, "responseText", {
  795. writable: true,
  796. });
  797. Object.defineProperty(this, "response", {
  798. writable: true,
  799. });
  800. this.response = JSON.stringify(res)
  801. this.responseText = JSON.stringify(res)
  802. }
  803. });
  804. } else if (url.includes('web_logs') || url.includes('metrics')) {
  805. throw new Error('【123 云盘会员青春版】已屏蔽此数据收集器');
  806. }
  807. return originalOpen.apply(this, arguments);
  808. };
  809.  
  810. unsafeWindow.fetch = async function (url, options) {
  811. if (url.includes('web_logs') || url.includes('metrics')) {
  812. throw new Error('【123 云盘会员青春版】已屏蔽此数据收集器');
  813. }
  814. return originalFetch(url, options);
  815. };
  816.  
  817. const originalCreateElement = document.createElement;
  818. if (user.ad) unsafeWindow.document.createElement = function (tagName) {
  819. const element = originalCreateElement.call(this, tagName);
  820. if (tagName.toLowerCase() === "div") {
  821. const observer = new MutationObserver(mutations => {
  822. for (const mutation of mutations) {
  823. $(mutation.addedNodes).each(function () {
  824. const element = $(this);
  825. if (this.tagName === "SPAN" && element.text().includes("点击查看详情")) {
  826. const newElement = element.clone();
  827. newElement.text("感谢您使用本脚本(原脚本链接:https://gf.qytechs.cn/zh-CN/scripts/513528-123-云盘会员青春版),好用的话就点击这儿来给个 Star 吧~");
  828. newElement.off("click").on("click", function () {
  829. window.open("https://github.com/hmjz100/123panYouthMember", "_blank");
  830. });
  831. element.replaceWith(newElement);
  832. }
  833. });
  834. }
  835. });
  836. observer.observe(element, { childList: true, subtree: true });
  837. }
  838. return element;
  839. };
  840.  
  841. let reddem = unsafeWindow.reddem = () => {
  842. const and = { os: "Android", vers: ["6.0", "7.1.2", "8.1.0", "9.0", "10.0"] };
  843. const ios = { os: "iOS", vers: ["12.0", "13.4", "14.0", "15.0"] };
  844.  
  845. const devs = {
  846. "Apple": ios,
  847. "Xiaomi": and,
  848. "Samsung": and,
  849. "Huawei": {
  850. ...and,
  851. hmos: () => (Math.random() < 0.5 ? "HarmonyOS;" : ""),
  852. hmsCore: () => `HMSCore ${Math.floor(Math.random() * 7) + 1}.${Math.floor(Math.random() * 10)}.${Math.floor(Math.random() * 10)}.${Math.floor(Math.random() * 1000)};`
  853. },
  854. "Google": and,
  855. "Oneplus": and,
  856. "Vivo": and,
  857. "Oppo": and
  858. };
  859.  
  860. const appXVers = [
  861. "2.1.3", "2.1.4",
  862. "2.3.1", "2.3.2", "2.3.4", "2.3.5",
  863. "2.3.6", "2.3.7", "2.3.8", "2.3.9",
  864. "2.3.12", "2.3.13", "2.3.14",
  865. "2.4.0", "2.4.1", "2.4.7"];
  866. const appVers = [
  867. "38", "39",
  868. "42", "43", "44", "45",
  869. "46", "47", "48", "49",
  870. "50", "54", "55",
  871. "56", "61", "62", "69"];
  872. const appXVer = appXVers[Math.floor(Math.random() * appXVers.length)];
  873. const appVer = appVers[appXVers.indexOf(appXVer)];
  874.  
  875. const brands = Object.keys(devs);
  876. const brand = brands[Math.floor(Math.random() * brands.length)];
  877. const { os, vers } = devs[brand];
  878.  
  879. const osVer = vers[Math.floor(Math.random() * vers.length)];
  880.  
  881. return {
  882. ua: `123pan/v${appXVer} (${os}_${osVer};${brand})`,
  883. version: Number(appVer),
  884. versionX: appXVer,
  885. osVersion: osVer,
  886. os: os,
  887. brand: brand
  888. }
  889. }
  890.  
  891. // 重写 setRequestHeader 方法
  892. unsafeWindow.XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
  893. let url = this.url, resName = header, resValue = value, oriResName = header, oriResValue = value
  894. let info = reddem()
  895.  
  896. let headers = {
  897. "user-agent": info.ua,
  898. "platform": info.os.toLowerCase(),
  899. "app-version": info.version,
  900. "x-app-version": info.versionX
  901. };
  902.  
  903. if (!!url && url.includes('download')) {
  904. // 修改请求头
  905. if (resName.toLowerCase() in headers) {
  906. resValue = headers[resName.toLowerCase()];
  907.  
  908. if (user.debug === 1 || user.debug === 2) console.log("【123 云盘会员青春版】Hook XHR", "\n请求地址:", url, "\n请求头项:", { [oriResName]: oriResValue }, "\n修改头项:", { [resName]: resValue }, "\n随机项目:", info)
  909.  
  910. header = resName;
  911. value = resValue;
  912. }
  913. }
  914.  
  915. return originalSetRequestHeader.apply(this, arguments);
  916. };
  917.  
  918. // hook 解密 base64 的部分
  919. unsafeWindow.atob = function (arguments) {
  920. return atob(decodeURIComponent(arguments))
  921. }
  922. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址