GM_download:脚本下载文件与扩展名白名单设置
GM_download 让脚本替你下载文件。官方文档同时给出了完整的安全护栏——毕竟「脚本往硬盘写文件」是敏感能力。
基本用法
GM_download("https://example.com/file.txt", "file.txt");
const dl = GM_download({
url: "https://example.com/file.txt",
name: "file.txt",
saveAs: true, // 弹出另存为对话框(仅 Browser API 模式)
conflictAction: "uniquify", // 重名处理:uniquify / overwrite / prompt
onload: () => console.log("完成"),
onerror: (e) => console.log(e.error),
onprogress: (p) => console.log(p)
});
// 取消下载
window.setTimeout(() => dl.abort(), 5000);
五种错误码
onerror 回调的 error 字段(官方文档全列):
| 错误码 | 含义 |
|---|---|
not_enabled | 下载功能没被用户开启 |
not_whitelisted | 文件扩展名不在白名单里 |
not_permitted | 功能开了,但浏览器没给下载权限 |
not_supported | 当前浏览器/版本不支持 |
not_succeeded | 下载启动失败或中途失败 |
打开下载功能
官方 FAQ 的设置流程:
- 进管理面板 → 设置页;
- 找到 Downloads(下载)区;
- Download Mode(下载模式)选 Browser API;
- 首次使用会弹通知,点通知授予下载权限;
- 检查 Whitelisted File Extensions(白名单扩展名)列表。
下载模式共有 native、browser、disabled 三种取值(GM_info 的 downloadMode 属性可查当前值);版本日志还提到新版把下载权限改为按次弹窗确认,可通过把下载模式设为 Native 跳过。
白名单是安全护栏
官方在 FAQ 里专门加粗提醒:往硬盘下载文件涉及安全,务必只放行不可执行文件的扩展名(如 .txt、.jpg、.zip 这类被动格式),不要把 .exe、.bat、.cmd 之类可执行扩展加进白名单——脚本一旦被投毒,白名单就是最后那道闸。
排障速查
- 报
not_whitelisted:把目标扩展名加入白名单,或让脚本作者换格式; - 报
not_permitted:设置页通知里的权限没点,重来一次; - 全都配置对了还是失败:检查Site Access 限制。