本帖最后由 zip11 于 2024-4-27 15:45 编辑
本帖最后由 zip11 于 2024-4-27 15:44 编辑
必须是前台脚本,模拟 点击 链接,调用游览器自带下载器,
// ==UserScript==
// @name video-down-2
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @description try to take over the world!
// @author You
// @match https://bbs.tampermonkey.net.cn
// @grant GM_xmlhttpRequest
// @connect https://media.w3.org/*
// ==/UserScript==
(function() {
'use strict';
// Your code here...
// 定义下载文件函数
function downloadFile(url, fileName) {
// 发送 GM_xmlhttpRequest 请求
GM_xmlhttpRequest({
method: "GET",
url: url,
responseType: "blob", // 将响应类型设置为 blob
onload: function(response) {
// 创建 blob 对象
var blob = new Blob([response.response], { type: response.response.type });
// 创建下载链接
var url = window.URL.createObjectURL(blob);
// 创建 a 标签并设置下载链接及文件名
var a = document.createElement("a");
a.href = url;
a.download = fileName;
// 模拟点击下载
a.click();
// 释放 blob 对象
window.URL.revokeObjectURL(url);
},
onprogress: function(event) {
// 获取下载进度信息
var percentComplete = (event.loaded / event.total) * 100;
console.log("下载进度:" + percentComplete.toFixed(2) + "%");
},
onerror: function(error) {
console.error('下载文件失败:', error);
}
});
}
// 调用下载文件函数并传入 URL 和自定义文件名
downloadFile('https://media.w3.org/2010/05/sintel/trailer.mp4', 'trailer.mp4');
})();