634 |
635 | This program is free software: you can redistribute it and/or modify
636 | it under the terms of the GNU Affero General Public License as published
637 | by the Free Software Foundation, either version 3 of the License, or
638 | (at your option) any later version.
639 |
640 | This program is distributed in the hope that it will be useful,
641 | but WITHOUT ANY WARRANTY; without even the implied warranty of
642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643 | GNU Affero General Public License for more details.
644 |
645 | You should have received a copy of the GNU Affero General Public License
646 | along with this program. If not, see .
647 |
648 | Also add information on how to contact you by electronic and paper mail.
649 |
650 | If your software can interact with users remotely through a computer
651 | network, you should also make sure that it provides a way for users to
652 | get its source. For example, if your program is a web application, its
653 | interface could display a "Source" link that leads users to an archive
654 | of the code. There are many ways you could offer source, and different
655 | solutions will be better for different programs; see section 13 for the
656 | specific requirements.
657 |
658 | You should also get your employer (if you work as a programmer) or school,
659 | if any, to sign a "copyright disclaimer" for the program, if necessary.
660 | For more information on this, and how to apply and follow the GNU AGPL, see
661 | .
662 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | ## 安装
25 | - LinkSwift
26 | https://github.moeyy.xyz/https://github.com/hmjz100/LinkSwift/raw/main/%EF%BC%88%E6%94%B9%EF%BC%89%E7%BD%91%E7%9B%98%E7%9B%B4%E9%93%BE%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B.user.js
27 | - (改)百度网盘会员青春版
28 | https://github.moeyy.xyz/https://github.com/hmjz100/LinkSwift/raw/main/%EF%BC%88%E6%94%B9%EF%BC%89%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E4%BC%9A%E5%91%98%E9%9D%92%E6%98%A5%E7%89%88.user.js
29 |
30 | ## 说明
31 |
32 | 基于[【网盘直链下载助手】](https://www.baiduyun.wiki/install.html)修改
33 | - 原作者:[油小猴](https://www.youxiaohou.com/)
34 | - 原仓库:[https://github.com/syhyz1990/baiduyun](https://github.com/syhyz1990/baiduyun)
35 | - 本脚本发布至 GreasyFork:[https://greasyfork.org/scripts/449291](https://greasyfork.org/scripts/449291)
36 | - 还有脚本猫:[https://scriptcat.org/script-show-page/1604](https://scriptcat.org/script-show-page/1604)
37 |
38 | ## 简介
39 |
40 | 支持 百度网盘/阿里云盘/中国移动云盘/天翼云盘/迅雷云盘/夸克网盘/UC网盘/123云盘 八大网盘,相比较原脚本,增加了更多功能~
41 |
42 | #### 卑微的小标题
43 |
44 | 这个脚本只有一个人在修改\~如果喜欢的话还请留个 Star 哦\~
45 | - 如有 bug 等问题请在这发[议题反馈](https://github.com/hmjz100/Online-disk-direct-link-download-assistant/issues)
46 |
47 | ## 版本号
48 | V. 1.1.1.2(改自 6.2.7 版本)
49 | 本脚本目前仅在 Github 与 GreasyFork 还有 脚本猫 发布,如果您是在其他渠道获取到本脚本的,请不要安装。
50 |
51 | ## 更新日志
52 |
53 | | 版本号 | 创建日期 | 更新日志 |
54 | | -------- | -------- | -------- |
55 | | 1.1.1.2 | 2025年06月08日 | 1、修复无法删除第一项远程配置的 Bug。 |
56 | | 1.1.1.1 | 2025年06月02日 | 1、修复推送到 Aria2 时推送成功但报错的 Bug。 |
57 | | 1.1.1 | 2025年06月01日 | 六一儿童节快乐!萌萌哒更新~
1、配置文件格式更新,支持添加、删除、切换多个服务配置;
2、支持比特彗星推送下载,原 RPC 已并入 Aria2 下载;
3、界面增加 Font Awesome 图标!更好看啦;
4、优化脚本代码、界面,运行更轻快;
5、修复上个版本遗存的问题。 |
58 | | 1.1.0.1 | 2025年05月09日 | 1、修复查看 RPC 下载任务的 Bug。 |
59 | | 1.1.0 | 2025年05月08日 | 1、支持 UC 网盘、123 云盘;
2、改进了网盘主题的注入方式;
3、聚合并重构了部分重复函数,对整体脚本逻辑进行了梳理和精简;
4、将脚本执行阶段从 document-body 适配为 document-start。 |
60 | | 1.0.9.7 | 2025年02月13日 | 1、修复移动云盘下载错误;
2、优化代码,更好的错误识别;
3、去除了游小猴云服务。 |
61 | | 1.0.9.6 | 2024年10月28日 | 1、支持在百度网盘中选择文件夹下载;
2、优化部分提示。 |
62 | | 1.0.9.5 | 2024年10月14日 | 1、修复因代码逻辑错误而无法获取链接的 Bug。 |
63 | | 1.0.9.4 | 2024年10月09日 | 1、修复因百度网盘 AccessToken 过期导致无法获取链接的 Bug。 |
64 | | 1.0.9.3 | 2024年08月10日 | 1、若网盘不支持在分享中下载,将仅显示保存网盘按钮;
2、优化下载界面,支持选择 Iframe 或 Blob 的方式来下载文件,增加按钮的提示文本;
3、优化 CSS 样式,统一了 SweetAlert2 按钮样式,同时适配了 Dark Reader 插件,界面更协调;
4、支持修改油小猴网站主题色;
5、原有主题相关设置现已移动至助手美化页面中。 |
65 | | 1.0.9.2 | 2024年08月04日 | 1、修复使用API下载时有可能会导致IDM无限弹窗的Bug。 |
66 | | 1.0.9.1 | 2024年07月30日 | 1、修复在百度网盘旧版下脚本无法删除元素的Bug。 |
67 | | 1.0.9 | 2024年07月29日 | 1、跟进官方V6.2.7,修复因无法进行百度授权而导致获取直链报错 9019 的 Bug。 |
68 | | 1.0.8.9 | 2024年07月22日 | 1、跟进官方V6.2.3,优化保存到网盘提示,修复阿里云盘、移动云盘失效的问题;
2、优化修改网盘主题的代码,减少对页面的破坏。 |
69 | | 1.0.8.8 | 2024年05月09日 | 1、修复下载菜单字体过小的Bug。|
70 | | 1.0.8.7 | 2024年05月06日 | 1、修复在阿里云盘分享页面下点击“未点亮”按钮时没有任何反应的Bug;
2、更新并优化网盘界面精简规则;
3、支持更换 百度网盘、阿里云盘、迅雷云盘、夸克网盘、移动云盘 界面的主题颜色。 |
71 | | 1.0.8.6 | 2024年04月08日 | 1、新增移动云盘会员中心页面,可在网盘中点击“会员中心”按钮查看(但无法使用第三方支付)。 |
72 | | 1.0.8.5 | 2024年04月07日 | 1、跟进官方V6.1.6,修复迅雷网盘分享页面无法选中文件,修复移动云盘无法判断页面。 |
73 | | 1.0.8.4 | 2024年04月07日 | 1、修复因重复绑定按钮而导致命令重复执行的Bug;
2、优化调试信息界面排版;
3、移除对百度网盘手机网页版的支持。 |
74 | | 1.0.8.3 | 2024年02月11日 | 1、适配阿里云盘新域名alipan.com。 |
75 | | 1.0.8.2 | 2023年11月29日 | 1、更换新图标。 |
76 | | 1.0.8.1 | 2023年11月25日 | 1、修复因重复绑定按钮而导致RPC下载会发送多条下载请求的Bug;
2、选择不使用油小猴服务器时,“用ghproxy连接Github仓库”更换为“用jsdelivr连接Github仓库”;
3、跟进官方V6.1.4版本,修复移动网盘无法获取链接,支持阿里云盘新域名alipan.com。 |
77 | | 1.0.8 | 2023年11月05日 | 1、修复迅雷网盘勾选文件后仍提示未勾选。 |
78 | | 1.0.7.9 | 2023年11月05日 | 1、更新精简网盘元素匹配规则,防止因通知横条而导致不能点到“API下载”以下的按钮。 |
79 | | 1.0.7.8 | 2023年09月10日 | 1、跟进官方V6.1.2,加入V2接口;
2、修复百度网盘下载时因为获取不到accessToken而一直转圈。 |
80 | | 1.0.7.7 | 2023年09月03日 | 1、修复百度网盘的按钮会因为主题不同而被改变颜色的Bug;
2、更新夸克网盘按钮与界面。 |
81 | | 1.0.7.6 | 2023年09月01日 | 1、修复“注入”功能;
2、黑暗模式支持随设置热切换。 |
82 | | 1.0.7.5 | 2023年08月31日 | 1、修复阿里云盘下载逻辑;
2、精简代码;
3、支持深色模式;
4、修改部分提示文本;
5、修改部分CSS;
6、设置可测试RPC连接。 |
83 | | 1.0.7.4 | 2023年08月27日 | 1、优化下载逻辑;
2、修复阿里云盘无法使用API下载。 |
84 | | 1.0.7.3 | 2023年08月24日 | 1、如果出现网络请求错误时支持自动重新请求;
2、可选择是否使用油小猴服务器。 |
85 | | 1.0.7.2 | 2023年07月29日 | 1、修复使用RPC下载时会重复发送链接的Bug。 |
86 | | 1.0.7.1 | 2023年07月27日 | 1、\[实验功能,不影响正常使用\]支持百度网盘手机网页版,勾选文件后可在顶栏找到“下载助手”按钮。 |
87 | | 1.0.7 | 2023年07月26日 | 1、重构夸克网盘、阿里云盘按钮。 |
88 | | 1.0.6.9 | 2023年07月25日 | 1、下载窗口加入关闭按钮。 |
89 | | 1.0.6.8 | 2023年07月24日 | 1、修复夸克网盘按钮错位。 |
90 | | 1.0.6.7 | 2023年07月24日 | 1、将百度网盘界面修改为主题色,可在设置选择是否修改;
2、增加主题色名称,更改部分内容颜色;
3、移动云盘API下载支持批量复制;
4、优化控制台输出结果;
5、百度网盘API下载不使用IDM时可以显示剩余时间;
6、“取消点亮按钮”按钮的位置现已移动到设置页面。
7、homo特有的彩蛋又回来力(喜)。 |
91 | | 1.0.6.6 | 2023年06月07日 | 1、修复暗号错误。 |
92 | | 1.0.6.5 | 2023年06月04日 | 1、修复即使输入正确暗号也不能成功点亮按钮的服务器错误。 |
93 | | 1.0.6.4 | 2023年06月02日 | 1、跟进官方V6.1.1版本,修复阿里云盘获取下载链接时的问题。 |
94 | | 1.0.6.3 | 2023年05月19日 | 1、照顾小屏幕用户,将始终显示复制全部链接的按钮;
2、增加取消下载时的动画。 |
95 | | 1.0.6.2 | 2023年05月08日 | 1、修复部分界面错位,实现CSS内置;
2、百度网盘界面将变得更加简洁。 |
96 | | 1.0.6.1 | 2023年05月06日 | 1、新增百度云盘API下载支持复制链接;
2、为了照顾手机浏览器用户,增大项目之间间隙,新增隐藏IDM提示选项,可在助手设置中启用;
3、修改CSS,界面会出现更多的主题色;
4、支持在游小猴官网查看暗号;
5、修复部分语法错误。 |
97 | | 1.0.6 | 2023年04月15日 | 1、修复了打开阿里云盘分享连接时因下载移动端广告导致只能点击API下载;
2、跟进官方6.0.4版本,修复夸克网盘获取下载链接失效、支持移动云盘。 |
98 | | 1.0.5.5 | 2023年04月01日 | 1、感谢[Night-stars](https://github.com/Night-stars-1)的帮助,修复因为原作者服务器导致的初始化暗号识别错误;
2、修改一些文本以及提供给服务器的信息。 |
99 | | 1.0.5.4 | 2023年03月13日 | 1、小修小改css,让主题色出现在更多地方;
2、修改下载链接获取失败的提示;
3、增加更多的主题色,可在助手设置查看;
4、homo彩蛋被删去力(悲)。 |
100 | | 1.0.5.3 | 2023年03月10日 | 1、阿里云盘可以摸到下载菜单了。 |
101 | | 1.0.5.2 | 2022年10月04日 | 1、增加脚本信息菜单;
2、优化阿里云盘显示svg图片;
3、修改弹窗按钮颜色。 |
102 | | 1.0.5.1 | 2022年09月30日 | 1、修复在切换按钮主题后夸克网盘不能正常显示按钮。 |
103 | | 1.0.5 | 2022年09月21日 | 1、跟进官方5.9.4版,修复文件名识别。 |
104 | | 1.0.4 | 2022年08月13日 | 1、修复了原作者留下的夸克网盘切换文件夹就多一个“下载助手”按钮的大BUG;
2、在下载菜单增加“助手设置”“更新日志”按钮;
3、修改阿里云盘和夸克网盘下载助手按钮样式;
4、增加“取消点亮按钮”油猴菜单;
5、修改部分css,使其与选择的主题更贴切。 |
105 | | 1.0.3 | 2022年08月11日 | 1、增加homo特有的彩蛋 |
106 | | 1.0.2 | 2022年08月10日 | 1、修改并加宽界面,调整部分css,使Sweetalert2界面更美观,更与原版相近;
2、修改部分提示文字,使文字更容易复制。 |
107 | | 1.0.1 | 2022年08月10日 | 1、去除更新提示;
2、更新Sweetalert2至11版本。 |
108 | | 1.0.0 | 2022年08月10日 | (脚本发布)
1、增加“注入”功能(bushi);
2、去除广告。 |
109 |
110 | ---
111 |
112 | 这是给认真阅读完README文件的人的赞美
113 | 个人博客: https://hmjz100blog.rf.gd
114 |
--------------------------------------------------------------------------------
/config/ali.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": 200,
3 | "tips": "这是一个油小猴服务器配置的备份文件,只在 (改)网盘直连下载助手 这个脚本无法访问油小猴的服务器时自动调用",
4 | "pcs": {
5 | "0": "https://api.aliyundrive.com/v2/file/get_share_link_download_url",
6 | "1": "https://api.aliyundrive.com/v2/file/get_download_url"
7 | },
8 | "img": "https://pic.rmb.bdstatic.com/bjh/8b9e14345b3cdf96aedac2f3971adcb02681.png",
9 | "btn": {
10 | "home": ".actions--M9Np-",
11 | "share": ".right--x0Z1g"
12 | },
13 | "d": "https://d.youxiaohou.com",
14 | "dom": {
15 | "list": "[class^=\"node-list-table-view--\"]",
16 | "grid": "[class^=\"node-list-grid-view--\"]",
17 | "switch": "[class^=\"switch-wrapper--\"]"
18 | },
19 | "name": "网盘直链下载助手",
20 | "init": {
21 | "0": "请输入初始化暗号",
22 | "1": "请输入暗号点亮按钮,扫二维码免费获取",
23 | "2": "暗号正确!【下载助手】点亮成功!",
24 | "3": "暗号不正确!",
25 | "4": "试试用微信扫码回复👉暗号👈来点亮按钮吧!",
26 | "5": "请先安装网盘万能助手,安装后请刷新本页!!!"
27 | },
28 | "api": {
29 | "0": "API下载(适用于 IDM,NDM 以及浏览器自带下载)",
30 | "1": "点击链接直接下载,例如:IDM,若未唤起IDM,请 点击这里 配置文件类型。"
31 | },
32 | "aria": {
33 | "0": "Aria下载(适用于 XDown 及 Linux Shell命令行)",
34 | "1": "点击链接复制地址到剪切板,粘贴到支持 aria2c 协议的下载器中,例如:XDown,Linux Shell。"
35 | },
36 | "rpc": {
37 | "0": "RPC下载(适用于 Motrix,Aria2 Tools,AriaNgGUI)",
38 | "1": "点击按钮发送链接至本地或远程 RPC 服务,例如:Motrix,RPC 参数含义见此处。"
39 | },
40 | "curl": {
41 | "0": "cURL下载(适用于 Windows,Linux,MacOS 终端)",
42 | "1": "点击链接复制地址到剪切板,粘贴到 Windows,Linux,MacOS 终端,支持断点续传。"
43 | },
44 | "bc": {
45 | "0": "BC下载(适用于 比特彗星)",
46 | "1": "点击链接复制地址到剪切板,粘贴到 比特彗星 下载器中。"
47 | },
48 | "num": "865746",
49 | "license": "AGPL3",
50 | "version": "6.2.3",
51 | "footer": ""
52 | }
--------------------------------------------------------------------------------
/config/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": 200,
3 | "tips": "这是一个油小猴服务器配置的备份文件,只在 (改)网盘直连下载助手 这个脚本无法访问油小猴的服务器时自动调用",
4 | "pcs": {
5 | "0": "https://pan.baidu.com/rest/2.0/xpan/multimedia?method=filemetas&dlink=1",
6 | "1": "https://pan.baidu.com/api/sharedownload?channel=chunlei&clienttype=12&web=1&app_id=250528",
7 | "2": "https://pan.baidu.com/share/tplconfig?fields=sign,timestamp&channel=chunlei&web=1&app_id=250528&clienttype=0",
8 | "3": "https://openapi.baidu.com/oauth/2.0/authorize?client_id=IlLqBbU3GjQ0t46TRwFateTprHWl39zF&response_type=token&redirect_uri=oob&confirm_login=0&scope=basic,netdisk"
9 | },
10 | "img": "https://pic.rmb.bdstatic.com/bjh/8b9e14345b3cdf96aedac2f3971adcb02681.png",
11 | "btn": {
12 | "home": ".tcuLAu",
13 | "main": ".wp-s-agile-tool-bar__header",
14 | "share": ".module-share-top-bar .x-button-box"
15 | },
16 | "d": "https://d.youxiaohou.com",
17 | "idm": "https://www.youxiaohou.com/zh-cn/idm.html",
18 | "name": "网盘直链下载助手",
19 | "init": {
20 | "0": "请输入初始化暗号",
21 | "1": "请输入暗号点亮按钮,扫二维码免费获取",
22 | "2": "暗号正确!【下载助手】点亮成功!",
23 | "3": "暗号不正确!",
24 | "4": "试试用微信扫码回复👉暗号👈来点亮按钮吧!",
25 | "5": "请先安装网盘万能助手,安装后请刷新本页!!!"
26 | },
27 | "api": {
28 | "0": "API下载(适用于 IDM,NDM 以及浏览器自带下载)",
29 | "1": "点击链接直接下载,例如:IDM,若未唤起IDM,请 点击这里 配置文件类型,建议配合超级会员使用。"
30 | },
31 | "aria": {
32 | "0": "Aria下载(适用于 XDown 及 Linux Shell命令行)",
33 | "1": "点击链接复制地址到剪切板,粘贴到支持 aria2c 协议的下载器中,例如:XDown,Linux Shell,建议配合超级会员使用。"
34 | },
35 | "rpc": {
36 | "0": "RPC下载(适用于 Motrix,Aria2 Tools,AriaNgGUI)",
37 | "1": "点击按钮发送链接至本地或远程 RPC 服务,例如:Motrix,RPC 参数含义见此处,建议配合超级会员使用。"
38 | },
39 | "curl": {
40 | "0": "cURL下载(适用于 Windows,Linux,MacOS 终端)",
41 | "1": "点击链接复制地址到剪切板,粘贴到 Windows,Linux,MacOS 终端,支持断点续传,建议配合超级会员使用。"
42 | },
43 | "bc": {
44 | "0": "BC下载(适用于 比特彗星)",
45 | "1": "点击链接复制地址到剪切板,粘贴到 比特彗星 下载器中,建议配合超级会员使用。"
46 | },
47 | "assistant": "https://www.crxsoso.com/addon/detail/mphijdmblaalbakceeadippfkbgfgaaa",
48 | "num": "865746",
49 | "license": "AGPL3",
50 | "version": "6.2.3",
51 | "ua": "pan.baidu.com",
52 | "footer": ""
53 | }
--------------------------------------------------------------------------------
/config/quark.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": 200,
3 | "tips": "这是一个油小猴服务器配置的备份文件,只在 (改)网盘直连下载助手 这个脚本无法访问油小猴的服务器时自动调用",
4 | "pcs": {
5 | "0": "https://drive.quark.cn/1/clouddrive/file/download?pr=ucpro&fr=pc"
6 | },
7 | "img": "https://pic.rmb.bdstatic.com/bjh/8b9e14345b3cdf96aedac2f3971adcb02681.png",
8 | "btn": {
9 | "home": ".btn-operate .btn-main",
10 | "share": ".file-info-share-buttom"
11 | },
12 | "d": "https://d.youxiaohou.com",
13 | "name": "网盘直链下载助手",
14 | "init": {
15 | "0": "请输入初始化暗号",
16 | "1": "请输入暗号点亮按钮,扫二维码免费获取",
17 | "2": "暗号正确!【下载助手】点亮成功!",
18 | "3": "暗号不正确!",
19 | "4": "试试用微信扫码回复👉暗号👈来点亮按钮吧!",
20 | "5": "请先安装网盘万能助手,安装后请刷新本页!!!"
21 | },
22 | "api": {
23 | "0": "API下载(适用于 IDM,NDM 以及浏览器自带下载)",
24 | "1": "点击链接直接下载,例如:IDM,若未唤起IDM,请 点击这里 配置文件类型。"
25 | },
26 | "aria": {
27 | "0": "Aria下载(适用于 XDown 及 Linux Shell命令行)",
28 | "1": "点击链接复制地址到剪切板,粘贴到支持 aria2c 协议的下载器中,例如:XDown,Linux Shell。"
29 | },
30 | "rpc": {
31 | "0": "RPC下载(适用于 Motrix,Aria2 Tools,AriaNgGUI)",
32 | "1": "点击按钮发送链接至本地或远程 RPC 服务,例如:Motrix,RPC 参数含义见此处。"
33 | },
34 | "curl": {
35 | "0": "cURL下载(适用于 Windows,Linux,MacOS 终端)",
36 | "1": "点击链接复制地址到剪切板,粘贴到 Windows,Linux,MacOS 终端,支持断点续传。"
37 | },
38 | "bc": {
39 | "0": "BC下载(适用于 比特彗星)",
40 | "1": "点击链接复制地址到剪切板,粘贴到 比特彗星 下载器中。"
41 | },
42 | "num": "865746",
43 | "license": "AGPL3",
44 | "version": "6.2.3",
45 | "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",
46 | "footer": ""
47 | }
--------------------------------------------------------------------------------
/config/tianyi.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": 200,
3 | "tips": "这是一个油小猴服务器配置的备份文件,只在 (改)网盘直连下载助手 这个脚本无法访问油小猴的服务器时自动调用",
4 | "pcs": {
5 | "0": "https://cloud.189.cn/api/open/file/getFileDownloadUrl.action",
6 | "1": "https://api.cloud.189.cn/open/oauth2/ssoH5.action",
7 | "2": "https://api.cloud.189.cn/open/file/getFileDownloadUrl.action"
8 | },
9 | "img": "https://pic.rmb.bdstatic.com/bjh/8b9e14345b3cdf96aedac2f3971adcb02681.png",
10 | "btn": {
11 | "home": ".nav-opea",
12 | "share": ".nav-opea"
13 | },
14 | "d": "https://d.youxiaohou.com",
15 | "name": "网盘直链下载助手",
16 | "init": {
17 | "0": "请输入初始化暗号",
18 | "1": "请输入暗号点亮按钮,扫二维码免费获取",
19 | "2": "暗号正确!【下载助手】点亮成功!",
20 | "3": "暗号不正确!",
21 | "4": "试试用微信扫码回复👉暗号👈来点亮按钮吧!",
22 | "5": "请先安装网盘万能助手,安装后请刷新本页!!!"
23 | },
24 | "api": {
25 | "0": "API下载(适用于 IDM,NDM 以及浏览器自带下载)",
26 | "1": "点击链接直接下载,例如:IDM,若未唤起IDM,请 点击这里 配置文件类型。"
27 | },
28 | "aria": {
29 | "0": "Aria下载(适用于 XDown 及 Linux Shell命令行)",
30 | "1": "点击链接复制地址到剪切板,粘贴到支持 aria2c 协议的下载器中,例如:XDown,Linux Shell。"
31 | },
32 | "rpc": {
33 | "0": "RPC下载(适用于 Motrix,Aria2 Tools,AriaNgGUI)",
34 | "1": "点击按钮发送链接至本地或远程 RPC 服务,例如:Motrix,RPC 参数含义见此处。"
35 | },
36 | "curl": {
37 | "0": "cURL下载(适用于 Windows,Linux,MacOS 终端)",
38 | "1": "点击链接复制地址到剪切板,粘贴到 Windows,Linux,MacOS 终端,支持断点续传。"
39 | },
40 | "bc": {
41 | "0": "BC下载(适用于 比特彗星)",
42 | "1": "点击链接复制地址到剪切板,粘贴到 比特彗星 下载器中。"
43 | },
44 | "num": "865746",
45 | "license": "AGPL3",
46 | "version": "6.2.3",
47 | "footer": ""
48 | }
--------------------------------------------------------------------------------
/config/xunlei.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": 200,
3 | "tips": "这是一个油小猴服务器配置的备份文件,只在 (改)网盘直连下载助手 这个脚本无法访问油小猴的服务器时自动调用",
4 | "pcs": {
5 | "0": "https://api-pan.xunlei.com/drive/v1/files/"
6 | },
7 | "img": "https://pic.rmb.bdstatic.com/bjh/8b9e14345b3cdf96aedac2f3971adcb02681.png",
8 | "btn": {
9 | "home": ".FileMenu__menu--XBFEH",
10 | "share": ".Share__batchActionBox--VKPyR"
11 | },
12 | "d": "https://d.youxiaohou.com",
13 | "name": "网盘直链下载助手",
14 | "init": {
15 | "0": "请输入初始化暗号",
16 | "1": "请输入暗号点亮按钮,扫二维码免费获取",
17 | "2": "暗号正确!【下载助手】点亮成功!",
18 | "3": "暗号不正确!",
19 | "4": "试试用微信扫码回复👉暗号👈来点亮按钮吧!",
20 | "5": "请先安装网盘万能助手,安装后请刷新本页!!!"
21 | },
22 | "api": {
23 | "0": "API下载(适用于 IDM,NDM 以及浏览器自带下载)",
24 | "1": "点击链接直接下载,例如:IDM,若未唤起IDM,请 点击这里 配置文件类型,IDM 不显示文件名时,请手动复制填写"
25 | },
26 | "aria": {
27 | "0": "Aria下载(适用于 XDown 及 Linux Shell命令行)",
28 | "1": "点击链接复制地址到剪切板,粘贴到支持 aria2c 协议的下载器中,例如:XDown,Linux Shell。"
29 | },
30 | "rpc": {
31 | "0": "RPC下载(适用于 Motrix,Aria2 Tools,AriaNgGUI)",
32 | "1": "点击按钮发送链接至本地或远程 RPC 服务,例如:Motrix,RPC 参数含义见此处。"
33 | },
34 | "curl": {
35 | "0": "cURL下载(适用于 Windows,Linux,MacOS 终端)",
36 | "1": "点击链接复制地址到剪切板,粘贴到 Windows,Linux,MacOS 终端,支持断点续传。"
37 | },
38 | "bc": {
39 | "0": "BC下载(适用于 比特彗星)",
40 | "1": "点击链接复制地址到剪切板,粘贴到 比特彗星 下载器中,镜像地址可用于加速下载,使用方法见此处。"
41 | },
42 | "mirror": [
43 | "vod0007-h05-vip-lixian.xunlei.com",
44 | "vod0008-h05-vip-lixian.xunlei.com",
45 | "vod0009-h05-vip-lixian.xunlei.com",
46 | "vod0010-h05-vip-lixian.xunlei.com",
47 | "vod0011-h05-vip-lixian.xunlei.com",
48 | "vod0012-h05-vip-lixian.xunlei.com",
49 | "vod0013-h05-vip-lixian.xunlei.com",
50 | "vod0014-h05-vip-lixian.xunlei.com",
51 | "vod0067-aliyun08-vip-lixian.xunlei.com",
52 | "vod0254-aliyun08-vip-lixian.xunlei.com",
53 | "vod0255-aliyun08-vip-lixian.xunlei.com",
54 | "vod0256-aliyun08-vip-lixian.xunlei.com",
55 | "vod0257-aliyun08-vip-lixian.xunlei.com",
56 | "vod0258-aliyun08-vip-lixian.xunlei.com",
57 | "vod0259-aliyun08-vip-lixian.xunlei.com",
58 | "vod0260-aliyun08-vip-lixian.xunlei.com",
59 | "vod0261-aliyun08-vip-lixian.xunlei.com",
60 | "vod0262-aliyun08-vip-lixian.xunlei.com",
61 | "vod0263-aliyun08-vip-lixian.xunlei.com",
62 | "vod0264-aliyun08-vip-lixian.xunlei.com",
63 | "vod0265-aliyun08-vip-lixian.xunlei.com",
64 | "vod0266-aliyun08-vip-lixian.xunlei.com",
65 | "vod0267-aliyun08-vip-lixian.xunlei.com",
66 | "vod0554-aliyun06-vip-lixian.xunlei.com",
67 | "vod0555-aliyun06-vip-lixian.xunlei.com",
68 | "vod0556-aliyun06-vip-lixian.xunlei.com",
69 | "vod0680-aliyun08-vip-lixian.xunlei.com",
70 | "vod0681-aliyun08-vip-lixian.xunlei.com",
71 | "vod0682-aliyun08-vip-lixian.xunlei.com",
72 | "vod0683-aliyun08-vip-lixian.xunlei.com",
73 | "vod0684-aliyun08-vip-lixian.xunlei.com",
74 | "vod0685-aliyun08-vip-lixian.xunlei.com",
75 | "vod0686-aliyun08-vip-lixian.xunlei.com",
76 | "vod0687-aliyun08-vip-lixian.xunlei.com",
77 | "vod0688-aliyun08-vip-lixian.xunlei.com",
78 | "vod0689-aliyun08-vip-lixian.xunlei.com",
79 | "vod0690-aliyun08-vip-lixian.xunlei.com",
80 | "vod0724-aliyun08-vip-lixian.xunlei.com",
81 | "vod0725-aliyun08-vip-lixian.xunlei.com",
82 | "vod0726-aliyun08-vip-lixian.xunlei.com",
83 | "vod0727-aliyun08-vip-lixian.xunlei.com",
84 | "vod0728-aliyun08-vip-lixian.xunlei.com",
85 | "vod0075.aliyun06.vip.lixian.xunlei.com",
86 | "vod0076.aliyun06.vip.lixian.xunlei.com",
87 | "vod0077.aliyun06.vip.lixian.xunlei.com",
88 | "vod0779-aliyun04-vip-lixian.xunlei.com",
89 | "vod0078.aliyun06.vip.lixian.xunlei.com",
90 | "vod0780-aliyun04-vip-lixian.xunlei.com",
91 | "vod0781-aliyun04-vip-lixian.xunlei.com",
92 | "vod0079.aliyun06.vip.lixian.xunlei.com",
93 | "vod0080.aliyun06.vip.lixian.xunlei.com",
94 | "vod0117.aliyun04.vip.lixian.xunlei.com",
95 | "vod0118.aliyun04.vip.lixian.xunlei.com",
96 | "vod0119.aliyun04.vip.lixian.xunlei.com",
97 | "vod1284-aliyun06-vip-lixian.xunlei.com",
98 | "vod1285-aliyun06-vip-lixian.xunlei.com",
99 | "vod1363-aliyun06-vip-lixian.xunlei.com",
100 | "vod1371-aliyun06-vip-lixian.xunlei.com",
101 | "vod1372-aliyun06-vip-lixian.xunlei.com",
102 | "vod1426-aliyun06-vip-lixian.xunlei.com",
103 | "vod1427-aliyun06-vip-lixian.xunlei.com",
104 | "vod1428-aliyun06-vip-lixian.xunlei.com",
105 | "vod1429-aliyun06-vip-lixian.xunlei.com",
106 | "vod1442-aliyun06-vip-lixian.xunlei.com",
107 | "vod1443-aliyun06-vip-lixian.xunlei.com",
108 | "vod1444-aliyun06-vip-lixian.xunlei.com",
109 | "vod1445-aliyun06-vip-lixian.xunlei.com",
110 | "vod1446-aliyun06-vip-lixian.xunlei.com",
111 | "vod1447-aliyun06-vip-lixian.xunlei.com",
112 | "vod1469-aliyun06-vip-lixian.xunlei.com",
113 | "vod1470-aliyun06-vip-lixian.xunlei.com",
114 | "vod1471-aliyun06-vip-lixian.xunlei.com",
115 | "vod1489-aliyun06-vip-lixian.xunlei.com",
116 | "vod1490-aliyun06-vip-lixian.xunlei.com",
117 | "vod1491-aliyun06-vip-lixian.xunlei.com",
118 | "vod1492-aliyun06-vip-lixian.xunlei.com",
119 | "vod1493-aliyun06-vip-lixian.xunlei.com",
120 | "vod0215.aliyun06.vip.lixian.xunlei.com",
121 | "vod0216.aliyun06.vip.lixian.xunlei.com",
122 | "vod0217.aliyun06.vip.lixian.xunlei.com",
123 | "vod0218.aliyun06.vip.lixian.xunlei.com",
124 | "vod0219.aliyun06.vip.lixian.xunlei.com",
125 | "vod0220.aliyun06.vip.lixian.xunlei.com",
126 | "vod0241.aliyun08.vip.lixian.xunlei.com",
127 | "vod0244.aliyun08.vip.lixian.xunlei.com",
128 | "vod0251.aliyun08.vip.lixian.xunlei.com",
129 | "vod0252.aliyun08.vip.lixian.xunlei.com",
130 | "vod0253.aliyun08.vip.lixian.xunlei.com",
131 | "vod0254.aliyun08.vip.lixian.xunlei.com",
132 | "vod0255.aliyun08.vip.lixian.xunlei.com",
133 | "vod0256.aliyun08.vip.lixian.xunlei.com",
134 | "vod0257.aliyun08.vip.lixian.xunlei.com",
135 | "vod0260.aliyun08.vip.lixian.xunlei.com",
136 | "vod0261.aliyun08.vip.lixian.xunlei.com",
137 | "vod0262.aliyun08.vip.lixian.xunlei.com",
138 | "vod0263.aliyun08.vip.lixian.xunlei.com",
139 | "vod0264.aliyun08.vip.lixian.xunlei.com",
140 | "vod0265.aliyun08.vip.lixian.xunlei.com",
141 | "vod0266.aliyun08.vip.lixian.xunlei.com",
142 | "vod0267.aliyun08.vip.lixian.xunlei.com",
143 | "vod3379-aliyun04-vip-lixian.xunlei.com",
144 | "vod3380-aliyun04-vip-lixian.xunlei.com",
145 | "vod3429-aliyun04-vip-lixian.xunlei.com",
146 | "vod3458-aliyun04-vip-lixian.xunlei.com",
147 | "vod3459-aliyun04-vip-lixian.xunlei.com",
148 | "vod3496-aliyun04-vip-lixian.xunlei.com",
149 | "vod3497-aliyun04-vip-lixian.xunlei.com",
150 | "vod3498-aliyun04-vip-lixian.xunlei.com",
151 | "vod3499-aliyun04-vip-lixian.xunlei.com",
152 | "vod3500-aliyun04-vip-lixian.xunlei.com",
153 | "vod3501-aliyun04-vip-lixian.xunlei.com",
154 | "vod3522-aliyun04-vip-lixian.xunlei.com",
155 | "vod3523-aliyun04-vip-lixian.xunlei.com",
156 | "vod3533-aliyun04-vip-lixian.xunlei.com",
157 | "vod3534-aliyun04-vip-lixian.xunlei.com",
158 | "vod3535-aliyun04-vip-lixian.xunlei.com",
159 | "vod3536-aliyun04-vip-lixian.xunlei.com",
160 | "vod3549-aliyun04-vip-lixian.xunlei.com",
161 | "vod3550-aliyun04-vip-lixian.xunlei.com",
162 | "vod3551-aliyun04-vip-lixian.xunlei.com",
163 | "vod3552-aliyun04-vip-lixian.xunlei.com",
164 | "vod3553-aliyun04-vip-lixian.xunlei.com",
165 | "vod3554-aliyun04-vip-lixian.xunlei.com",
166 | "vod3555-aliyun04-vip-lixian.xunlei.com",
167 | "vod0551.aliyun06.vip.lixian.xunlei.com",
168 | "vod0552.aliyun06.vip.lixian.xunlei.com",
169 | "vod0553.aliyun06.vip.lixian.xunlei.com",
170 | "vod0554.aliyun06.vip.lixian.xunlei.com",
171 | "vod0555.aliyun06.vip.lixian.xunlei.com",
172 | "vod0556.aliyun06.vip.lixian.xunlei.com",
173 | "vod0686.aliyun08.vip.lixian.xunlei.com",
174 | "vod0687.aliyun08.vip.lixian.xunlei.com",
175 | "vod0688.aliyun08.vip.lixian.xunlei.com",
176 | "vod0689.aliyun08.vip.lixian.xunlei.com",
177 | "vod0724.aliyun08.vip.lixian.xunlei.com",
178 | "vod0725.aliyun08.vip.lixian.xunlei.com",
179 | "vod0726.aliyun08.vip.lixian.xunlei.com",
180 | "vod0727.aliyun08.vip.lixian.xunlei.com",
181 | "vod0728.aliyun08.vip.lixian.xunlei.com",
182 | "vod0759.aliyun04.vip.lixian.xunlei.com",
183 | "vod0760.aliyun04.vip.lixian.xunlei.com",
184 | "vod0769.aliyun04.vip.lixian.xunlei.com",
185 | "vod0770.aliyun04.vip.lixian.xunlei.com",
186 | "vod0771.aliyun04.vip.lixian.xunlei.com",
187 | "vod0772.aliyun04.vip.lixian.xunlei.com",
188 | "vod0773.aliyun04.vip.lixian.xunlei.com",
189 | "vod0774.aliyun04.vip.lixian.xunlei.com",
190 | "vod0775.aliyun04.vip.lixian.xunlei.com",
191 | "vod0776.aliyun04.vip.lixian.xunlei.com",
192 | "vod0777.aliyun04.vip.lixian.xunlei.com",
193 | "vod0778.aliyun04.vip.lixian.xunlei.com",
194 | "vod0779.aliyun04.vip.lixian.xunlei.com",
195 | "vod0780.aliyun04.vip.lixian.xunlei.com",
196 | "vod0781.aliyun04.vip.lixian.xunlei.com",
197 | "vod3522.aliyun04.vip.lixian.xunlei.com",
198 | "vod3523.aliyun04.vip.lixian.xunlei.com",
199 | "vod3533.aliyun04.vip.lixian.xunlei.com",
200 | "vod3535.aliyun04.vip.lixian.xunlei.com",
201 | "vod3550.aliyun04.vip.lixian.xunlei.com",
202 | "vod3551.aliyun04.vip.lixian.xunlei.com",
203 | "vod3552.aliyun04.vip.lixian.xunlei.com",
204 | "vod3553.aliyun04.vip.lixian.xunlei.com",
205 | "vod3554.aliyun04.vip.lixian.xunlei.com",
206 | "vod3555.aliyun04.vip.lixian.xunlei.com"
207 | ],
208 | "num": "865746",
209 | "license": "AGPL3",
210 | "version": "6.2.3",
211 | "footer": ""
212 | }
--------------------------------------------------------------------------------
/config/yidong.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": 200,
3 | "tips": "这是一个油小猴服务器配置的备份文件,只在 (改)网盘直连下载助手 这个脚本无法访问油小猴的服务器时自动调用",
4 | "pcs": {
5 | "0": "https://yun.139.com/orchestration/personalCloud/uploadAndDownload/v1.0/downloadRequest",
6 | "1": "https://caiyun.139.com/stapi/outlink/content/download"
7 | },
8 | "img": "https://pic.rmb.bdstatic.com/bjh/8b9e14345b3cdf96aedac2f3971adcb02681.png",
9 | "btn": {
10 | "home": ".top_button",
11 | "share": ".top-btns"
12 | },
13 | "d": "https://d.youxiaohou.com",
14 | "name": "网盘直链下载助手",
15 | "init": {
16 | "0": "请输入初始化暗号",
17 | "1": "请输入暗号点亮按钮,扫二维码免费获取",
18 | "2": "暗号正确!【下载助手】点亮成功!",
19 | "3": "暗号不正确!",
20 | "4": "试试用微信扫码回复👉暗号👈来点亮按钮吧!",
21 | "5": "请先安装网盘万能助手,安装后请刷新本页!!!"
22 | },
23 | "api": {
24 | "0": "API下载(适用于 IDM,NDM 以及浏览器自带下载)",
25 | "1": "点击链接直接下载,例如:IDM,若未唤起IDM,请 点击这里 配置文件类型。"
26 | },
27 | "aria": {
28 | "0": "Aria下载(适用于 XDown 及 Linux Shell命令行)",
29 | "1": "点击链接复制地址到剪切板,粘贴到支持 aria2c 协议的下载器中,例如:XDown,Linux Shell。"
30 | },
31 | "rpc": {
32 | "0": "RPC下载(适用于 Motrix,Aria2 Tools,AriaNgGUI)",
33 | "1": "点击按钮发送链接至本地或远程 RPC 服务,例如:Motrix,RPC 参数含义见此处。"
34 | },
35 | "curl": {
36 | "0": "cURL下载(适用于 Windows,Linux,MacOS 终端)",
37 | "1": "点击链接复制地址到剪切板,粘贴到 Windows,Linux,MacOS 终端,支持断点续传。"
38 | },
39 | "bc": {
40 | "0": "BC下载(适用于 比特彗星)",
41 | "1": "点击链接复制地址到剪切板,粘贴到 比特彗星 下载器中。"
42 | },
43 | "num": "865746",
44 | "license": "AGPL3",
45 | "version": "6.2.3",
46 | "footer": ""
47 | }
--------------------------------------------------------------------------------
/default.min.css:
--------------------------------------------------------------------------------
1 | .swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px hsla(0deg,0%,0%,.075),0 1px 2px hsla(0deg,0%,0%,.075),1px 2px 4px hsla(0deg,0%,0%,.075),1px 3px 8px hsla(0deg,0%,0%,.075),2px 4px 16px hsla(0deg,0%,0%,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#6459dd transparent #6459dd transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#dd3333;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 3px}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:0 0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 3px;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:0 0;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:0 0;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-warning.swal2-icon-show .swal2-icon-content{-webkit-animation:swal2-animate-i-mark .5s;animation:swal2-animate-i-mark .5s}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-info.swal2-icon-show .swal2-icon-content{-webkit-animation:swal2-animate-i-mark .8s;animation:swal2-animate-i-mark .8s}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-question.swal2-icon-show .swal2-icon-content{-webkit-animation:swal2-animate-question-mark .8s;animation:swal2-animate-question-mark .8s}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:0 0;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#6459dd;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#6459dd}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#6459dd}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}.leave-russia-now-and-apply-your-skills-to-the-world{display:flex;position:fixed;z-index:1939;top:0;right:0;bottom:0;left:0;flex-direction:column;align-items:center;justify-content:center;padding:25px 0 20px;background:#20232a;color:#fff;text-align:center}.leave-russia-now-and-apply-your-skills-to-the-world div{max-width:560px;margin:10px;line-height:146%}.leave-russia-now-and-apply-your-skills-to-the-world iframe{max-width:100%;max-height:55.5555555556vmin;margin:16px auto}.leave-russia-now-and-apply-your-skills-to-the-world strong{border-bottom:2px dashed #fff}.leave-russia-now-and-apply-your-skills-to-the-world button{display:flex;position:fixed;z-index:1940;top:0;right:0;align-items:center;justify-content:center;width:48px;height:48px;margin-right:10px;margin-bottom:-10px;border:none;background:0 0;color:#aaa;font-size:48px;font-weight:700;cursor:pointer}.leave-russia-now-and-apply-your-skills-to-the-world button:hover{color:#fff}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@-webkit-keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@-webkit-keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}
--------------------------------------------------------------------------------
/(改)百度网盘会员青春版.user.js:
--------------------------------------------------------------------------------
1 | // ==UserScript==
2 | // @name (改)百度网盘会员青春版
3 | // @author Hmjz100、Gwen
4 | // @namespace github.com/hmjz100
5 | // @version 1.2.6.2
6 | // @description 《也许同类型中最好用?》系列、LinkSwift 官方扩展 - 显示百度网盘身份信息为会员,支持使用视频倍速、生成字幕、下载AI字幕、关闭AI聊天、修改头像、修改用户名等功能,自定义程度超高!需要修改头部代码来配置显示内容(非常简单!)
7 | // @icon data:image/png;base64,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
8 | // @license MIT
9 | // @match *://pan.baidu.com/*
10 | // @match *://yun.baidu.com/*
11 | // @grant GM_addStyle
12 | // @grant GM_openInTab
13 | // @grant unsafeWindow
14 | // @run-at document-start
15 | // @require https://unpkg.com/jquery@3.6.0/dist/jquery.min.js
16 | // ==/UserScript==
17 |
18 | (function () {
19 | 'use strict';
20 |
21 | /*
22 | unsafeWindow 检测
23 | 代码为自创
24 | */
25 | if (typeof unsafeWindow === 'undefined') {
26 | window.unsafeWindow = window;
27 | }
28 |
29 | /*
30 | 防止代码因其他原因被执行多次
31 | 代码出自 “Via 轻插件”,作者谷花泰
32 | */
33 | const key = encodeURIComponent('百度网盘会员青春版:主代码');
34 | if (window[key]) return;
35 | window[key] = true;
36 |
37 | let mount = idontknow("LinkSwiftBaiduYouthMember")
38 |
39 | var user = {
40 | // 以下设置项中,常规项目(就是以//开头注释的项目)除非特殊说明,否则一般 0 为关闭,1 为开启
41 | vip: 1, // 开启会员修改(总开关)
42 | svip: 1, // 显示为超级会员,建议 1
43 | previous: 0, // 显示为会员过期,建议 0,变为仅修改历史最高的会员类型、等级
44 |
45 | // 以下是自定义项目(以/*开头注释的项目),修改也非常简单
46 | /*
47 | 自定义用户名与头像,留空则使用已登录账号数据
48 | */
49 | name: "百湿不得其解",
50 | photo: "https://bkimg.cdn.bcebos.com/pic/cdbf6c81800a19d8bc3e5cfd95ab958ba61ea9d3e8b3",
51 | /*
52 | 会员等级与成长值,可留空为""
53 | 普通会员等级最高为 10 (以前是 8)
54 | 超级会员等级最高为 10
55 | 超级会员 1~10 的成长值分别为 0 1000 3000 7000 15000 27000 43000 56000 88000 152000,后两个值为猜测
56 | */
57 | level: 10,
58 | point: 152000,
59 | /*
60 | 自定义会员ID,留空则使用已登录账号数据
61 | 据网上观察应为六位数,现在亦可输入文本
62 | */
63 | vip_id: "000001 - What's your problem?",
64 | /*
65 | 会员过期时间 格式为Unix时间戳,可留空为""
66 | 1562118175 - 2019-07-03 09:42:55 (宏彦获水时)
67 | 2147483648 - 2038-01-19 11:14:08 (2038问题时)
68 | 253402185600 - 9999-12-31 00:00:00 (终极时)
69 | */
70 | endtime: 253402185600,
71 |
72 | // 以下的常规项目(就是以//开头注释的项目)均为独立功能,不受总开关控制
73 | aiChat: 0, // 显示云一朵 AI 聊天的相关功能,建议 0,相关功能大多数都是在右上角的 AI 聊天的右侧边栏入口中
74 | aiCollect: 0, // 显示百度网盘 AI 看的相关入口,建议 0,作用于左侧边栏
75 | versionSwitchButton: 1, // 显示百度网盘的新旧版界面切换按钮,建议 1
76 | feedbackButton: 0, // 显示百度网盘的反馈录屏工具的相关入口,建议 0
77 | pfileView: 1, // 在线打开文档时,使用新版在线文档查看器,而不是旧版的在线 WPS 文档查看器,建议 1
78 | analytics: 0, // 允许百度网盘网页分析浏览信息,建议 0,分析原理是以 new Image 或 document.createElement("img") 的形式让浏览器访问特殊的图片来给服务器传递信息
79 | adTime: 0.0001, // 视频播放时的广告(等待)时间,建议 0.0001
80 | debug: 0, // 显示本脚本的调试信息到 JavaScript 控制台中,建议 0,另外,1 显示所有,2 仅显示 Hook 修改参数,3 仅显示禁用网页分析
81 |
82 | // 以下是关键参数,不能修改
83 | adToken: null,
84 | }
85 |
86 | var originalOpen = XMLHttpRequest.prototype.open;
87 | unsafeWindow.XMLHttpRequest.prototype.open = function (method, url) {
88 | url = new URL(url, window.location.origin).href
89 | if (url.includes('/api/loginStatus')) {
90 | this.addEventListener('readystatechange', function () {
91 | if (this.readyState == 4) {
92 | let res, oriRes
93 | try {
94 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
95 | } catch (e) {
96 | res = this.response, oriRes = this.response
97 | }
98 | res?.login_info?.vip_type && user.vip === 1 && user.previous === 0 ? res.login_info.vip_type = `${user.svip === 1 ? 2 : 1}1` : ""
99 | res?.login_info?.vip_identity && user.vip === 1 && user.previous === 0 ? res.login_info.vip_identity = Number(`${user.svip === 1 ? 2 : 1}1`) : ""
100 | res?.login_info?.vip_level && user.vip === 1 && user.previous === 0 ? res.login_info.vip_level = user.level : ""
101 | res?.login_info?.vip_point && user.vip === 1 && user.previous === 0 ? res.login_info.vip_point = user.point : ""
102 | res.login_info["photo_url"] && user.photo ? res.login_info["photo_url"] = user.photo : ""
103 | res?.login_info?.username && user.name ? res.login_info.username = user.name : ""
104 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
105 | Object.defineProperty(this, "responseText", {
106 | writable: true,
107 | });
108 | this.responseText = JSON.stringify(res)
109 | Object.defineProperty(this, "responseText", {
110 | writable: false,
111 | });
112 | }
113 | })
114 | originalOpen.apply(this, arguments);
115 | } else if (url.includes('/user/info')) {
116 | user.vip === 1 && user.previous === 0 ? this.addEventListener('readystatechange', function () {
117 | if (this.readyState == 4) {
118 | let res, oriRes
119 | try {
120 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
121 | } catch (e) {
122 | res = this.response, oriRes = this.response
123 | }
124 | res.user_info.is_vip ? res.user_info.is_vip = user.vip : ""
125 | res.user_info.is_svip ? res.user_info.is_svip = user.svip : ""
126 | res.user_info.is_plus_buy ? res.user_info.is_plus_buy = user.svip : ""
127 | res.user_info.plus_buy_hit ? res.user_info.plus_buy_hit = user.svip : ""
128 | res.user_info.is_vip_v2 && user.level && user.level >= 2 ? res.user_info.is_vip_v2 = user.vip : "";
129 | res.user_info.is_vip_v2_new && user.level && user.level >= 2 ? res.user_info.is_vip_v2_new = user.vip : "";
130 | res.user_info.username && user.name ? res.user_info.username = user.name : "";
131 | res.user_info.photo && user.photo ? res.user_info.photo = user.photo : "";
132 | res.user_info.vipsid && user.vip_id ? res.user_info.vipsid = user.vip_id : "";
133 | res.user_info.phone ? res.user_info.phone = "01095099" : "";
134 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
135 | Object.defineProperty(this, "responseText", {
136 | writable: true,
137 | });
138 | Object.defineProperty(this, "response", {
139 | writable: true,
140 | });
141 | this.response = JSON.stringify(res)
142 | this.responseText = JSON.stringify(res)
143 | }
144 | }) : ""
145 | originalOpen.apply(this, arguments);
146 | } else if (url.includes('/membership/user') && !url.includes('method=rights')) {
147 | this.addEventListener('readystatechange', function () {
148 | if (this.readyState == 4) {
149 | let res, oriRes
150 | try {
151 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
152 | } catch (e) {
153 | res = this.response, oriRes = this.response
154 | }
155 | // 决定网页显示会员标识
156 | user.vip === 1 && user.previous === 0 ? res.current_product = {
157 | "cluster": "vip",
158 | "detail_cluster": user.svip === 1 ? "svip" : "vip", // 决定修改会员标签
159 | "product_type": user.svip === 1 ? `vip2_1m_auto` : `vip_1m_auto`,
160 | "product_id": "12187135090581539740"
161 | } : ""
162 | user.vip === 1 && user.previous === 0 ? res.current_product_v2 = {
163 | "cluster": "vip",
164 | "detail_cluster": user.svip === 1 ? "svip" : "vip", // 决定修改会员标签
165 | "product_type": user.svip === 1 ? `vip2_1m_auto` : `vip_1m_auto`,
166 | "product_id": "12187135090581539740"
167 | } : ""
168 |
169 | // 决定网页显示会员等级
170 | user.vip === 1 ? res.level_info = {
171 | ...res.level_info,
172 | "current_value": user.point, // 决定所有会员标签
173 | "current_level": user.level, // 决定所有会员标签
174 | "history_value": user.point,
175 | "history_level": user.level,
176 | "v10_id": user.vip_id ? user.vip_id : "",
177 | "last_manual_collection_time": 0
178 | } : ""
179 |
180 | if (user.vip === 1 && res.privilege_list) {
181 | [...res.privilege_list].forEach(item => {
182 | item.free_count = 100
183 | })
184 | }
185 |
186 | // 决定网页展示会员剩余时间
187 | user.vip === 1 && user.previous === 0 && user.svip === 0 ? res.reminder = {
188 | ...res.reminder,
189 | "vip": {
190 | "leftseconds": ((user.endtime ? user.endtime : 2147483648) * 1000 - Date.now()) / 1000,
191 | "nextState": "normal"
192 | }
193 | } : user.svip === 1 && user.previous === 0 ? res.reminder = {
194 | ...res.reminder,
195 | "svip": {
196 | "leftseconds": ((user.endtime ? user.endtime : 2147483648) * 1000 - Date.now()) / 1000,
197 | "nextState": "normal"
198 | }
199 | } : ""
200 |
201 | // 其它(已有套餐、之前套餐)
202 | user.vip === 1 && user.previous === 0 && res.product_infos ? res.product_infos = [{
203 | "product_id": "12187135090581539740",
204 | "buy_time": "946656000",
205 | "start_time": 946656000,
206 | "end_time": user.endtime ? user.endtime : 2147483648,
207 | "cluster": "vip",
208 | "detail_cluster": user.svip === 1 ? "svip" : "vip",
209 | "product_name": user.svip === 1 ? "svip2_nd" : "vip1_nd",
210 | "cur_svip_type": "year",
211 | "function_num": 8,
212 | "status": 0,
213 | "buy_description": "超级SVIP套餐(永久)",
214 | "product_description": "自打百度一诞生我就买了!"
215 | }, ...res.product_infos] : ""
216 | user.vip === 1 ? res.previous_product = {
217 | "cluster": "vip",
218 | "detail_cluster": user.svip === 1 ? "svip" : "vip", // 决定之前会员标签
219 | "product_type": user.svip === 1 ? `vip2_1m_auto` : `vip_1m_auto`,
220 | "expired_time": 946656000
221 | } : ""
222 | user.vip === 1 ? res.previous_product_v2 = {
223 | "cluster": "vip",
224 | "detail_cluster": user.svip === 1 ? "svip" : "vip", // 决定之前会员标签
225 | "product_type": user.svip === 1 ? `vip2_1m_auto` : `vip_1m_auto`,
226 | "expired_time": 946656000
227 | } : ""
228 |
229 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
230 |
231 | Object.defineProperty(this, "response", {
232 | writable: true,
233 | });
234 | Object.defineProperty(this, "responseText", {
235 | writable: true,
236 | });
237 | this.response = JSON.stringify(res)
238 | this.responseText = JSON.stringify(res)
239 | }
240 | })
241 | originalOpen.apply(this, arguments);
242 | } else if (url.includes('/api/streaming') && !url.includes('M3U8_SUBTITLE_SRT')) { //获取视频m3u8接口
243 | let pureURL = url.replace(/vip=\d+/, 'vip=0').replace(/_1080&/, '_720&')
244 | if (user.adToken) {
245 | pureURL += ('&adToken=' + encodeURIComponent(user.adToken))
246 | this.adToken = user.adToken
247 | user.adToken = null
248 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n修改地址:", pureURL)
249 | originalOpen.call(this, method, pureURL, false);
250 | } else {
251 | this.addEventListener('readystatechange', function () {
252 | if (this.readyState == 4 && this.responseText[0] == '{') {
253 | let res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText), log
254 | user.adToken = res.adToken
255 |
256 | let m3uRequest = new XMLHttpRequest();
257 | m3uRequest.open(method, pureURL, false);
258 | m3uRequest.send();
259 | let m3uText = m3uRequest.responseText
260 |
261 | Object.defineProperty(this, "status", {
262 | writable: true,
263 | });
264 | this.status = m3uRequest.status;
265 |
266 | if (m3uText.startsWith('#EXTM3U')) {
267 | log = "M3U8预览\n" + m3uText.split('\n').slice(0, 5).join('\n')
268 | res = m3uText
269 | } else {
270 | res = JSON.parse(m3uText)
271 | res.errno = 133
272 | user.adTime ? (res.ltime = user.adTime) : (res.ltime = 0.0001)
273 | user.adTime ? (res.adTime = user.adTime) : (res.adTime = 0.0001)
274 | }
275 |
276 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", log || res)
277 |
278 | Object.defineProperty(this, "responseText", {
279 | writable: true,
280 | });
281 | this.responseText = res;
282 | }
283 | })
284 | originalOpen.call(this, method, pureURL);
285 | }
286 | } else if (url.includes('/api/streaming') && url.includes('M3U8_SUBTITLE_SRT')) {
287 | this.addEventListener('readystatechange', function () {
288 | if (this.readyState == 4 && this.responseText.includes('#EXT-X-MEDIA:TYPE=SUBTITLES')) {
289 | let res = this.response;
290 | console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", res);
291 |
292 | // 使用正则表达式提取所有字幕信息
293 | var subsMatch = [...res.matchAll(/#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="([^"]+)",DEFAULT=[^,]+,AUTOSELECT=[^,]+,LANGUAGE="([^"]+)",VIDEO-LAN=[^,]+,AI-SUB=\s*([^,\s]+)\s*(https?:\/\/[^\s]+)/g)];
294 |
295 | var subsHTML = $(`[独家功能] AI字幕均为逐句分割而非整段分割
`); // 用于存储所有按钮的HTML
296 |
297 | // 遍历所有字幕项,生成对应的下载按钮
298 | let index = 1
299 | subsMatch.forEach(subInfo => {
300 | console.log(subInfo)
301 | var subName = subInfo[1]; // 字幕名称
302 | var language = subInfo[2]; // 字幕语言
303 | var aiSub = subInfo[3] === 'YES' ? 'AI-' : ''; // 是否为AI生成
304 | var subUrl = subInfo[4]; // 字幕下载地址
305 |
306 | let buttons = $(``)
310 |
311 | subsHTML.append(buttons);
312 | index++;
313 | });
314 |
315 | waitForKeyElements(`aside.vp-aside div.vp-tabs div.vp-tabs__content`, function (element) {
316 | $(`.${mount}`).remove();
317 | element.after(subsHTML);
318 | subsHTML.find(".downloadSubtitle.beta").on('click', async function (event) {
319 | event.preventDefault();
320 | let element = $(this);
321 | let oriHTML = element.html()
322 | let ins = {};
323 | let progress = {};
324 | let index = element.data('index');
325 |
326 | element.prop('disabled', true);
327 |
328 | ins[index] = setInterval(function () {
329 | let prog = +progress[index] || 0;
330 | if (prog === 0) {
331 | element.html(' 正在下载...');
332 | } else {
333 | element.html(' 已下载 ' + prog + '%');
334 | }
335 | }, 10);
336 |
337 | try {
338 | let response = await fetch(element.data("url"));
339 | if (!response.ok) throw new Error('网络响应失败');
340 |
341 | let totalSize = response.headers.get('Content-Length') || 0;
342 | let reader = response.body.getReader();
343 | let receivedLength = 0;
344 | let chunks = [];
345 |
346 | while (true) {
347 | const { done, value } = await reader.read();
348 | if (done) break;
349 | chunks.push(value);
350 | receivedLength += value.length;
351 | progress[index] = ((receivedLength / totalSize) * 100).toFixed(1);
352 | }
353 |
354 | const blob = new Blob(chunks);
355 |
356 | clearInterval(ins[index]);
357 | progress[index] = 100;
358 | element.html(' 下载完成,浏览器弹框中');
359 |
360 | const url = URL.createObjectURL(blob);
361 | const a = document.createElement('a');
362 | a.href = url;
363 | a.download = element.data("name");
364 | a.style.display = 'none';
365 | document.body.appendChild(a);
366 | a.click();
367 |
368 | setTimeout(() => {
369 | URL.revokeObjectURL(url);
370 | document.body.removeChild(a);
371 | }, 1000);
372 |
373 | setTimeout(function () {
374 | element.html(oriHTML);
375 | $(this).prop('disabled', false);
376 | }.bind(this), 3000);
377 | } catch (error) {
378 | clearInterval(ins[index]);
379 | console.error("下载失败:", error);
380 | element.html(' 下载失败,点击重试?');
381 | $(this).prop('disabled', false).one('click', async function () {
382 | $(this).trigger('click');
383 | });
384 | }
385 | });
386 | }, true);
387 | }
388 | });
389 | originalOpen.apply(this, arguments);
390 | } else if (url.includes('/msg/streaming') || url.includes('/share/streaming')) {
391 | this.addEventListener('readystatechange', function () {
392 | if (this.readyState == 4 && this.responseText[0] == '{') {
393 | let res, oriRes
394 | try {
395 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
396 | } catch (e) {
397 | res = this.response, oriRes = this.response
398 | }
399 | user.adTime ? (res.ltime = user.adTime) : (res.ltime = 0.0001)
400 | user.adTime ? (res.adTime = user.adTime) : (res.adTime = 0.0001)
401 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
402 | Object.defineProperty(this, 'responseText', {
403 | writable: true,
404 | })
405 | this.responseText = JSON.stringify(res)
406 | }
407 | })
408 | originalOpen.apply(this, arguments);
409 | } else if (url.includes('/api/getsyscfg') && url.includes('huge_upgrade')) {
410 | this.addEventListener('readystatechange', function () {
411 | if (this.readyState == 4) {
412 | let res, oriRes
413 | try {
414 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
415 | } catch (e) {
416 | res = this.response, oriRes = this.response
417 | }
418 | res.huge_upgrade.cfg_list[1].show_features = (user.feedbackButton === 0 ? "0" : "1")
419 | res.huge_upgrade.cfg_list[0].new_nav_show = (user.versionSwitchButton === 0 ? "0" : "1")
420 | res.huge_upgrade.cfg_list[0].new_nav_href = "https://pan.baidu.com/disk/main"
421 | res.huge_upgrade.cfg_list[0].old_nav_show = (user.versionSwitchButton === 0 ? "0" : "1")
422 | res.huge_upgrade.cfg_list[0].old_nav_href = "https://pan.baidu.com/disk/home?stayAtHome=true"
423 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
424 | Object.defineProperty(this, "response", {
425 | writable: true,
426 | });
427 | Object.defineProperty(this, "responseText", {
428 | writable: true,
429 | });
430 | this.response = JSON.stringify(res)
431 | this.responseText = JSON.stringify(res)
432 | }
433 | })
434 | originalOpen.apply(this, arguments);
435 | } else if (url.includes('/api/getsyscfg') && url.includes('netdisk_docchat_config')) {
436 | user.aiChat === 0 ? this.addEventListener('readystatechange', function () {
437 | if (this.readyState == 4) {
438 | let res, oriRes
439 | try {
440 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
441 | } catch (e) {
442 | res = this.response, oriRes = this.response
443 | }
444 | res.netdisk_docchat_config.cfg_list[0].is_chat_show = "0"
445 | res.netdisk_docchat_config.cfg_list[0].is_docview_chat_auto_show = "0"
446 | res.netdisk_docchat_config.cfg_list[0].is_docview_chat_show = "0"
447 | res.netdisk_docchat_config.cfg_list[0].is_home_need_out_sug = "0"
448 | res.netdisk_docchat_config.cfg_list[0].is_main_chat_show = "0"
449 | res.netdisk_docchat_config.cfg_list[0].is_videoview_chat_auto_show = "0"
450 | res.netdisk_docchat_config.cfg_list[0].is_videoview_chat_show = "0"
451 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
452 | Object.defineProperty(this, "response", {
453 | writable: true,
454 | });
455 | Object.defineProperty(this, "responseText", {
456 | writable: true,
457 | });
458 | this.response = JSON.stringify(res)
459 | this.responseText = JSON.stringify(res)
460 | }
461 | }) : ""
462 | originalOpen.apply(this, arguments);
463 | } else if (url.includes('/api/getsyscfg') && url.includes('ai_collect')) {
464 | user.aiCollect === 0 ? this.addEventListener('readystatechange', function () {
465 | if (this.readyState == 4) {
466 | let res, oriRes
467 | try {
468 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
469 | } catch (e) {
470 | res = this.response, oriRes = this.response
471 | }
472 | res.ai_collect.cfg_list[0].is_ai_collect_show = "0"
473 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
474 | Object.defineProperty(this, "response", {
475 | writable: true,
476 | });
477 | Object.defineProperty(this, "responseText", {
478 | writable: true,
479 | });
480 | this.response = JSON.stringify(res)
481 | this.responseText = JSON.stringify(res)
482 | }
483 | }) : ""
484 | originalOpen.apply(this, arguments);
485 | } else if (url.includes('/api/getsyscfg') && url.includes('netdisk_docview_config')) {
486 | this.addEventListener('readystatechange', function () {
487 | if (this.readyState == 4) {
488 | let res, oriRes
489 | try {
490 | res = JSON.parse(this.responseText), oriRes = JSON.parse(this.responseText)
491 | } catch (e) {
492 | res = this.response, oriRes = this.response
493 | }
494 | res.netdisk_docview_config.cfg_list[0].auto_search_to_ai = (user.aiChat === 0 ? "0" : "1")
495 | res.netdisk_docview_config.cfg_list[0].use_pfile_for_doc = (user.pfileView === 0 ? "0" : "1")
496 | res.netdisk_docview_config.cfg_list[0].use_pfile_for_ppt = (user.pfileView === 0 ? "0" : "1")
497 | res.netdisk_docview_config.cfg_list[0].use_pfile_reader = (user.pfileView === 0 ? "0" : "1")
498 | res.netdisk_docview_config.cfg_list[0].use_wps_reader = (user.pfileView === 0 ? "1" : "0")
499 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook XHR", "\n请求地址:", url, "\n原始回复:", oriRes, "\n修改回复:", res)
500 | Object.defineProperty(this, "response", {
501 | writable: true,
502 | });
503 | Object.defineProperty(this, "responseText", {
504 | writable: true,
505 | });
506 | this.response = JSON.stringify(res)
507 | this.responseText = JSON.stringify(res)
508 | }
509 | })
510 | originalOpen.apply(this, arguments);
511 | } else {
512 | originalOpen.apply(this, arguments);
513 | }
514 | }
515 | var hookedOpen = unsafeWindow.XMLHttpRequest.prototype.open
516 |
517 | GM_addStyle(`
518 | /* 帮助百度网盘修正错误的会员色 */
519 | dt.level-1 {
520 | background: #fd6d65 !important;
521 | }
522 | dt.level-2 {
523 | background: #f3a723 !important;
524 | }
525 | dt.level-1 i.desc-arrow {
526 | border-bottom: 10px solid #dd6966 !important;
527 | }
528 | dt.level-2 i.desc-arrow {
529 | border-bottom: 10px solid #d29633 !important;
530 | }
531 |
532 | .${mount} {
533 | margin: 15px 0 15px 20px;
534 | display: grid;
535 | grid-gap: 5px;
536 | }
537 |
538 | .${mount} h1 {
539 | font-size: small;
540 | }
541 |
542 | [data-theme="dark"] .${mount} h1 {
543 | color: white;
544 | }
545 |
546 | a.downloadSubtitle, button.downloadSubtitle {
547 | border: none;
548 | border-radius: 5px;
549 | font-size: 12px;
550 | background: #0095ff;
551 | color: #fff;
552 | padding: 5px;
553 | width: fit-content;
554 | white-space: nowrap;
555 | text-decoration:none;
556 | }
557 | a.downloadSubtitle:hover, a.downloadSubtitle:disabled, button.downloadSubtitle:hover, button.downloadSubtitle:disabled {
558 | background: #0095ffD0;
559 | }
560 | `)
561 |
562 | // 禁止分析网页信息
563 | if (user.analytics === 0) unsafeWindow.Image = function () {
564 | const img = new Image();
565 | return new Proxy(img, {
566 | set(target, prop, value) {
567 | if (prop === 'src' && (value.includes('analytics') || value.includes('ztbox'))) {
568 | let url = new URL(value, location.origin);
569 | if (user.debug === 1 || user.debug === 3) console.warn("【(改)百度网盘会员青春版】unAnalytics", '\n类型:new Image\n禁止网页分析信息:', url.href);
570 | return true; // 阻止设置
571 | }
572 | target[prop] = value; // 设置其他属性
573 | return true;
574 | },
575 | get(target, prop) {
576 | return target[prop]; // 获取属性值
577 | }
578 | });
579 | };
580 | const originalCreateElement = document.createElement;
581 | if (user.analytics === 0) unsafeWindow.document.createElement = function (tagName) {
582 | const element = originalCreateElement.call(unsafeWindow.document, tagName);
583 | if (tagName.toLowerCase() === 'img') {
584 | Object.defineProperty(element, 'src', {
585 | set(value) {
586 | if (value.includes('analytics') || value.includes('ztbox')) {
587 | let url = new URL(value, location.origin);
588 | if (user.debug === 1 || user.debug === 3) console.warn("【(改)百度网盘会员青春版】unAnalytics", '\n类型:document.createElement("img")\n禁止网页分析信息:', url.href)
589 | return true;
590 | } else {
591 | element.setAttribute('src', value)
592 | }
593 | },
594 | get() {
595 | return element.getAttribute('src');
596 | }
597 | });
598 | }
599 | return element;
600 | };
601 |
602 | waitForKeyElements(`.vp-video__control-bar--playback-rates button, vp-video__control-bar--video-subtitles-select-item`, function (element) {
603 | element.on('click', function () {
604 | XMLHttpRequest.prototype.open = originalOpen;
605 | setTimeout(function () {
606 | XMLHttpRequest.prototype.open = hookedOpen;
607 | }, 20)
608 | })
609 | })
610 |
611 | let localsTimer = setInterval(() => {
612 | if (!unsafeWindow.locals) return
613 | clearInterval(localsTimer)
614 | let locals = unsafeWindow.locals
615 | let originalSet = locals.set
616 | locals.set = function (...args) {
617 | if (typeof args[1] == 'number' || typeof args[1] == 'string') {
618 | let oriarg = args[1]
619 | if (args[0].includes('is_vip')) {
620 | args[1] = user.vip === 1 && user.previous === 0 ? 1 : 0
621 | } else if (args[0].includes('is_svip')) {
622 | args[1] = user.svip === 1 && user.previous === 0 ? 1 : 0;
623 | } else if (args[0] === 'vip_level') {
624 | user.level ? args[1] = user.level : "";
625 | } else if (args[0] === 'v10_id') {
626 | user.vip_id ? args[1] = user.vip_id : "";
627 | } else if (args[0] === 'username') {
628 | user.name ? args[1] = user.name : "";
629 | } else if (args[0] === 'photo') {
630 | user.photo ? args[1] = user.photo : "";
631 | }
632 | if (oriarg !== args[1]) {
633 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook Locals", "\n原始数据:", args[0], "-", oriarg, "\n修改数据:", args[0], "-", args[1]);
634 | }
635 | }
636 | originalSet.apply(this, args);
637 | }
638 | if (/\/s\/.*?\?fid=.*?/.test(location.href)) unsafeWindow.locals.self = 1
639 | if (locals.userInfo) {
640 | user.vip === 1 && user.previous === 0 ? locals.userInfo.vip_identity = Number(`${user.svip === 1 ? 2 : 1}1`) : ""
641 | user.name ? locals.userInfo.username = user.name : ""
642 | user.photo ? locals.userInfo["photo_url"] = user.photo : ""
643 | user.level ? locals.userInfo.vip_level = user.level : ""
644 | user.vip_id ? locals.userInfo.svip10_id = user.vip_id : ""
645 | } else if (locals.mset && user.vip === 1 && user.previous === 0) {
646 | locals.mset({
647 | 'is_vip': user.vip === 1 && user.previous === 0 ? 1 : 0,
648 | 'is_svip': user.svip === 1 && user.previous === 0 ? 1 : 0,
649 | 'vip_level': user.level ? user.level : "",
650 | 'svip10_id': user.vip_id ? user.vip_id : "",
651 | 'show_vip_ad': 0
652 | })
653 | } else {
654 | user.level ? locals.vip_level = user.level : ""
655 | locals.is_vip = user.vip === 1 && user.previous === 0 ? 1 : 0
656 | locals.is_svip = user.svip === 1 && user.previous === 0 ? 1 : 0
657 | user.vip === 1 && user.previous === 0 ? locals.show_vip_ad = 0 : ""
658 | user.photo ? locals.photo = user.photo : ""
659 | user.name ? locals.username = user.name : ""
660 | }
661 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook", "\nLocals:", locals)
662 | }, 1)
663 |
664 | let yunDataTimer = setInterval(() => {
665 | if (!unsafeWindow.yunData) return;
666 | clearInterval(yunDataTimer)
667 | let yunData = unsafeWindow.yunData
668 |
669 | let originalSet = yunData.setData;
670 | yunData.setData = function (...args) {
671 | if (typeof args[0] === 'object') {
672 | let oriargs = { ...args[0] }
673 | let newargs = args[0]
674 | if (oriargs.hasOwnProperty('is_vip')) {
675 | newargs.is_vip = user.vip === 1 && user.previous === 0 ? 1 : 0;
676 | }
677 | if (oriargs.hasOwnProperty('is_svip')) {
678 | newargs.is_svip = user.svip === 1 && user.previous === 0 ? 1 : 0;
679 | }
680 | if (oriargs.hasOwnProperty('vip_level')) {
681 | user.level ? newargs.vip_level = user.level : "";
682 | }
683 | if (oriargs.hasOwnProperty('v10_id')) {
684 | user.vip_id ? newargs.v10_id = user.vip_id : "";
685 | }
686 | if (oriargs.hasOwnProperty('photo')) {
687 | user.photo ? newargs.photo = user.photo : "";
688 | }
689 | if (oriargs.hasOwnProperty('username')) {
690 | user.name ? newargs.username = user.name : "";
691 | }
692 | if (JSON.stringify(oriargs) !== JSON.stringify(newargs)) {
693 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook yunData", "\n原始数据:", oriargs, "\n修改数据:", newargs);
694 | }
695 | } else {
696 | let oriarg = args[1]
697 | if (args[0].includes('is_vip')) {
698 | args[1] = user.vip === 1 && user.previous === 0 ? 1 : 0
699 | } else if (args[0].includes('is_svip')) {
700 | args[1] = user.svip === 1 && user.previous === 0 ? 1 : 0;
701 | } else if (args[0] === 'vip_level') {
702 | user.level ? args[1] = user.level : "";
703 | } else if (args[0] === 'v10_id') {
704 | user.vip_id ? args[1] = user.vip_id : "";
705 | } else if (args[0] === 'username') {
706 | user.name ? args[1] = user.name : "";
707 | } else if (args[0] === 'photo') {
708 | user.photo ? args[1] = user.photo : "";
709 | }
710 | if (oriarg !== args[1]) {
711 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook yunData", "\n原始数据:", args[0], "-", oriarg, "\n修改数据:", args[0], "-", args[1]);
712 | }
713 | }
714 | originalSet.apply(this, args);
715 | }
716 | user.name ? yunData.username = user.name : ""
717 | user.name ? yunData.MYNAME = user.name : ""
718 | user.photo ? yunData.MYAVATAR = user.photo : ""
719 | user.photo ? yunData.photo = user.photo : ""
720 | user.level ? yunData.vip_level = user.level : ""
721 | yunData.ISVIP = user.vip === 1 && user.previous === 0 ? 1 : 0
722 | yunData.ISSVIP = user.svip === 1 ? 1 : 0
723 | user.vip ? yunData.ISYEARVIP = 1 : ""
724 | yunData.is_vip = user.vip === 1 && user.previous === 0 ? 1 : 0
725 | yunData.is_svip = user.svip === 1 ? 1 : 0
726 | yunData.is_vip_v2 = user.vip === 1 && user.previous === 0 ? 1 : 0
727 | yunData.is_svip_v2_new = user.svip === 1 ? 1 : 0
728 | user.vip ? yunData.show_vip_ad = 0 : ""
729 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook", "\nyunData:", yunData)
730 | }, 1)
731 |
732 | let yunDataRequireTimer = setInterval(() => {
733 | if (!unsafeWindow.require) return;
734 | clearInterval(yunDataRequireTimer)
735 | require.async('pan-center:widget/data/yunData', function (yunData) {
736 | let originalSet = yunData.setData;
737 | yunData.setData = function (...args) {
738 | if (typeof args[0] === 'object') {
739 | let oriargs = { ...args[0] }
740 | let newargs = args[0]
741 | if (oriargs.hasOwnProperty('is_vip')) {
742 | user.vip === 1 && user.previous === 0 ? newargs.is_vip = 1 : newargs.is_vip = 0;
743 | }
744 | if (oriargs.hasOwnProperty('is_svip')) {
745 | user.svip === 1 && user.previous === 0 ? newargs.is_svip = 1 : newargs.is_svip = 0;
746 | }
747 | if (oriargs.hasOwnProperty('is_evip')) {
748 | user.svip === 1 && user.previous === 0 ? newargs.is_evip = 1 : newargs.is_evip = 0;
749 | }
750 | if (oriargs.hasOwnProperty('vip_level')) {
751 | user.level ? newargs.vip_level = user.level : "";
752 | }
753 | if (oriargs.hasOwnProperty('v10_id')) {
754 | user.vip_id ? newargs.v10_id = user.vip_id : "";
755 | }
756 | if (oriargs.hasOwnProperty('has_3V1_coupon')) {
757 | user.svip === 1 && user.previous === 0 ? newargs.has_3V1_coupon = 1 : newargs.has_3V1_coupon = 0;
758 | }
759 | if (oriargs.hasOwnProperty('photo')) {
760 | user.photo ? newargs.photo = user.photo : "";
761 | }
762 | if (oriargs.hasOwnProperty('username')) {
763 | user.name ? newargs.username = user.name : "";
764 | }
765 | if (JSON.stringify(oriargs) !== JSON.stringify(newargs)) {
766 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook yunDataModule", "\n原始数据:", oriargs, "\n修改数据:", newargs);
767 | }
768 | } else {
769 | let oriarg = args[1]
770 | if (args[0].includes('is_vip')) {
771 | args[1] = user.vip === 1 && user.previous === 0 ? 1 : 0
772 | } else if (args[0].includes('is_svip')) {
773 | args[1] = user.svip === 1 && user.previous === 0 ? 1 : 0;
774 | } else if (args[0] === 'vip_level') {
775 | user.level ? args[1] = user.level : "";
776 | } else if (args[0] === 'v10_id') {
777 | user.vip_id ? args[1] = user.vip_id : "";
778 | } else if (args[0] === 'username') {
779 | user.name ? args[1] = user.name : "";
780 | } else if (args[0] === 'photo') {
781 | user.photo ? args[1] = user.photo : "";
782 | }
783 | if (oriarg !== args[1]) {
784 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook yunDataModule", "\n原始数据:", args[0], "-", oriarg, "\n修改数据:", args[0], "-", args[1]);
785 | }
786 | }
787 | originalSet.apply(this, args);
788 | }
789 | if (user.debug === 1 || user.debug === 2) console.log("【(改)百度网盘会员青春版】Hook", "\nyunDataModule:", yunData)
790 | })
791 | }, 1)
792 |
793 | /**
794 | * waitForKeyElements
795 | * @description 监测动态加载的 DOM 元素并在元素出现时执行回调函数。适用于 AJAX/iframe 内容。
796 | * @param {string} selectorTxt - jQuery 选择器字符串,用于定位目标元素
797 | * @param {function} actionFunction - 回调函数,会将 jQuery 元素对象作为参数返回。在函数中 `return true` 可以取消后续查找
798 | * @param {boolean} [bWaitOnce=true] - 找到元素后是否仅执行一次回调函数
799 | * @param {string} [iframeSelector] - 可选,iframe 元素选择器
800 | * @example
801 | * waitForKeyElements(".comments", (jNode) => {
802 | * jNode.text("内容已修改");
803 | * // return true; // 取消后续检测
804 | * });
805 | * @requires jQuery
806 | */
807 | function waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector) {
808 | var targetNodes, btargetsFound;
809 |
810 | if (typeof iframeSelector == "undefined")
811 | targetNodes = $(selectorTxt);
812 | else
813 | targetNodes = $(iframeSelector).contents().find(selectorTxt);
814 |
815 | if (targetNodes && targetNodes.length > 0) {
816 | btargetsFound = true;
817 | targetNodes.each(function () {
818 | var jThis = $(this);
819 | var alreadyFound = jThis.data('alreadyFound') || false;
820 |
821 | if (!alreadyFound) {
822 | var cancelFound = actionFunction(jThis);
823 | if (cancelFound)
824 | btargetsFound = false;
825 | else {
826 | jThis.data('alreadyFound');
827 | }
828 | }
829 | });
830 | } else {
831 | btargetsFound = false;
832 | }
833 |
834 | var controlObj = waitForKeyElements.controlObj || {};
835 | var controlKey = selectorTxt.replace(/[^\w]/g, "_") + actionFunction.toString().replace(/[^\w]/g, "_");
836 | var timeControl = controlObj[controlKey];
837 |
838 | if (btargetsFound && bWaitOnce && timeControl) {
839 | clearInterval(timeControl);
840 | delete controlObj[controlKey]
841 | } else {
842 | if (!timeControl) {
843 | timeControl = setInterval(() => {
844 | waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector);
845 | }, 1000);
846 | controlObj[controlKey] = timeControl;
847 | }
848 | }
849 | waitForKeyElements.controlObj = controlObj;
850 | }
851 |
852 | // 这是啥?我不到啊
853 | function idontknow(input) {
854 | let charArray = input.split('');
855 | // Fisher-Yates 洗牌算法
856 | for (let i = charArray.length - 1; i > 0; i--) {
857 | let j = Math.floor(Math.random() * (i + 1));
858 | [charArray[i], charArray[j]] = [charArray[j], charArray[i]];
859 | }
860 | return charArray.join('');
861 | }
862 | })()
--------------------------------------------------------------------------------