(改)网盘直链下载助手

一个基于 JavaScript 的网盘文件下载地址获取工具,支持 百度网盘/阿里云盘/天翼云盘/迅雷云盘/夸克网盘/移动网盘 六大网盘 | 基于【网盘直链下载助手】修改自6.2.7版本 | 开源 - 自用 - 去广 | 改界面 - 添功能 - 修Bug | 不仅能够精简网盘界面 还支持修改网盘界面主题颜色!

< Feedback on (改)网盘直链下载助手

Review: قالتىس - قوليازما ئىشلەيدۇ

§
يوللانغان ۋاقتى: 2024-08-03

蹲一个作者帮忙捏:
我这边一直有在用这个脚本,下了很久,有段时间失灵又卸过,这次重新下回来,会发现:API下载配合IDM,会频繁让我IDM陷入死循环,然后把电脑卡宕机
在其他情况下,IDM是可以正常使用的,所以个人排除IDM的问题,能否请作者大大看看原因?

§
يوللانغان ۋاقتى: 2024-08-03

哦,对,忘了讲了,图2是最先弹出来的窗口,然后压缩包图标的下方并不显示文件大小,因而一直无法加载,点了开始下载会直接报错
如果不点,则会过渡到图1,疯狂弹下载界面,图3可以看出申请了N次

hmjz100ئاپتور
§
يوللانغان ۋاقتى: 2024-08-03

改了下代码,更新下最新版看看还会弹吗?

§
يوللانغان ۋاقتى: 2024-08-04

改了下代码,更新下最新版看看还会弹吗?

!!!感谢作者回复!!!好像还是差不多,唯一的就是自动弹窗速度变慢了,我这次尝试点“取消”把针对https://d.pcs.baidu.com的自动安装给ban了,才成功从死循环逃出来,目前是必须手动复制解析出来的网址+新建项目,勉强还能使用,但速度就很夸张了,直降到个位数KB去了

hmjz100ئاپتور
§
يوللانغان ۋاقتى: 2024-08-04

毒盘速度就这样,还有这个死循环Bug我一直没复现成功……看你的IDM有些旧了,要不装下我正在用的这个 6.41.2 的 IDM 试试?
https://ww0.lanzouj.com/imR8X26iek5g 密码:4sfb

§
يوللانغان ۋاقتى: 2024-08-10

我的Chrome版本是 127.0.6533.100 (64位),idm版本是6.42 build19,更新到最新版脚本之后还是有这个死循环bug😂

hmjz100ئاپتور
§
يوللانغان ۋاقتى: 2024-08-10
تەھرىرلەنگەن ۋاقتى: 2024-08-10

这bug太奇怪了,我一直没复现成功,但是大伙可以试试改下代码,代码里搜索“使用 Get 发送请求”定位到 get 的这个函数,把 get 函数替换成下面这个看看:

// 使用 Get 发送请求
get(url, headers, type, extra, maxRetries = 3, currentRetry = 0) {
    return new Promise((resolve, reject) => {
        const sendRequest = function () {
            let requestObj = GM_xmlhttpRequest({
                method: "GET", url, headers,
                responseType: type || 'json',
                onload: function (res) {
                    if (res.status === 204) {
                        console.log('【(改)网盘直链下载助手】Get(load)\n\x1B[31m该请求已被某个下载工具捕获。' + (res.statusText ? ("\n\x1B[0m工具提示:\x1B[31m" + res.statusText) : "") + '\x1B[0m\n请求地址:' + url + '\n请求头部:', headers, '\n请求结果:', res);
                        requestObj.abort();
                        idm[extra.index] = true;
                        return;
                    }
                    if (type === 'blob') {
                        console.log('【(改)网盘直链下载助手】Get(load) Blob\n请求地址:' + url + '\n请求头部:', headers, '\n请求结果:', res);
                        res.status === 200 && base.blobDownload(res.response, extra.filename);
                        resolve(res);
                    } else {
                        // 尝试格式化请求结果以方便调试
                        if (res.response) {
                            try {
                                res.decodedResponse = JSON.parse(res.response);
                            } catch (e) { }
                            try {
                                res.decodedResponse = JSON.parse(base.decode(res.response));
                            } catch (e) { }
                        }
                        if (res.responseText) {
                            try {
                                res.decodedResponseText = JSON.parse(res.responseText);
                            } catch (e) { }
                            try {
                                res.decodedResponseText = JSON.parse(base.decode(res.responseText));
                            } catch (e) { }
                        }
                        console.log('【(改)网盘直链下载助手】Get(load)\n请求地址:' + url + '\n请求头部:', headers, '\n请求结果:', res);
                        resolve(res.response || res.responseText);
                    }
                },
                onprogress: function (res) {
                    if (res.status === 204) {
                        console.log('【(改)网盘直链下载助手】Get(load)\n\x1B[31m该请求已被某个下载工具捕获。' + (res.statusText ? ("\n\x1B[0m工具提示:\x1B[31m" + res.statusText) : "") + '\x1B[0m\n请求地址:' + url + '\n请求头部:', headers, '\n请求结果:', res);
                        requestObj.abort();
                        idm[extra.index] = true;
                        return;
                    }
                    if (extra && extra.filename && extra.index) {
                        res.total > 0 ? progress[extra.index] = (res.loaded * 100 / res.total).toFixed(2) : progress[extra.index] = 0.00;
                        console.log('【(改)网盘直链下载助手】Get(progress)\n\x1B[31m该请求正在进行中。' + (progress[extra.index] ? ("\n\x1B[0m下载进度:\x1B[31m" + progress[extra.index]) : "") + '\x1B[0m');
                    }
                },
                onloadstart(res) {
                    if (res.status === 204) {
                        console.log('【(改)网盘直链下载助手】Get(load)\n\x1B[31m该请求已被某个下载工具捕获。' + (res.statusText ? ("\n\x1B[0m工具提示:\x1B[31m" + res.statusText) : "") + '\x1B[0m\n请求地址:' + url + '\n请求头部:', headers, '\n请求结果:', res);
                        requestObj.abort();
                        idm[extra.index] = true;
                        return;
                    }
                    console.log('【(改)网盘直链下载助手】Get(start)\n请求地址:' + url + '\n请求头部:', headers);
                    extra && extra.filename && extra.index && (request[extra.index] = requestObj);
                },
                onerror: function (err) {
                    if (currentRetry < maxRetries) {
                        currentRetry++;
                        console.error(`【(改)网盘直链下载助手】Get(error)\n请求出现错误,可能是网络问题\n5秒后将重试 (错误次数:${currentRetry}/${maxRetries})...`, err);
                        setTimeout(function () {
                            console.log(`【(改)网盘直链下载助手】Get(error)\n重新尝试请求...`);
                            sendRequest(); // 重新发送请求
                        }, 5000)
                    } else {
                        reject('【(改)网盘直链下载助手】Get(error)\n请求出现错误,可能是网络问题\n无法继续请求,达到最大错误次数。', err); // 达到最大重试次数,拒绝 Promise
                    }
                },
            });
        };

        sendRequest(); // 初始请求
    });
},
hmjz100ئاپتور
§
يوللانغان ۋاقتى: 2024-08-10

如果可以的话,看看能不能在下载的时候截一张 F12->控制台 的图片给我分析看看

§
يوللانغان ۋاقتى: 2024-08-10

哦,对,忘了讲了,图2是最先弹出来的窗口,然后压缩包图标的下方并不显示文件大小,因而一直无法加载,点了开始下载会直接报错
如果不点,则会过渡到图1,疯狂弹下载界面,图3可以看出申请了N次

其实你不想老是弹出弹窗可以把选项里这个“√”给去掉,然后选择不显示启动界面,不过这样做不好的地方就是你得去主页看才知道文件有没有在下载,我也不喜欢这个弹窗,所以直接在选项里把“启动界面”和“开始下载”的对话框全给关了,每次都是选择完之后再去主页看文件有没有在下载,倒也没出过啥问题,也可能是我下载夸克的文件比较多吧

جاۋاب قايتۇرۇش

جاۋاب قايتۇرۇش ئۈچۈن كىرىش.