一个基于 JavaScript 的网盘文件下载地址获取工具,支持 百度网盘/阿里云盘/天翼云盘/迅雷云盘/夸克网盘/移动网盘 六大网盘 | 基于【网盘直链下载助手】修改自6.2.7版本 | 开源 - 自用 - 去广 | 改界面 - 添功能 - 修Bug | 不仅能够精简网盘界面 还支持修改网盘界面主题颜色!
哦,对,忘了讲了,图2是最先弹出来的窗口,然后压缩包图标的下方并不显示文件大小,因而一直无法加载,点了开始下载会直接报错
如果不点,则会过渡到图1,疯狂弹下载界面,图3可以看出申请了N次
改了下代码,更新下最新版看看还会弹吗?
毒盘速度就这样,还有这个死循环Bug我一直没复现成功……看你的IDM有些旧了,要不装下我正在用的这个 6.41.2 的 IDM 试试?
https://ww0.lanzouj.com/imR8X26iek5g 密码:4sfb
我的Chrome版本是 127.0.6533.100 (64位),idm版本是6.42 build19,更新到最新版脚本之后还是有这个死循环bug😂
这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(); // 初始请求
});
},
如果可以的话,看看能不能在下载的时候截一张 F12->控制台 的图片给我分析看看
蹲一个作者帮忙捏:
我这边一直有在用这个脚本,下了很久,有段时间失灵又卸过,这次重新下回来,会发现:API下载配合IDM,会频繁让我IDM陷入死循环,然后把电脑卡宕机
在其他情况下,IDM是可以正常使用的,所以个人排除IDM的问题,能否请作者大大看看原因?