Greasy Fork

Greasy Fork is available in English.

全能下载工具 - Universal Downloader

突破网站限制,下载所有类型的媒体资源(视频、音频、图片、文档等),支持质量选择和自定义保存路径

当前为 2026-01-05 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
weiruankeji2025
评分
0 0 0
版本
1.0.0
创建于
2026-01-05
更新于
2026-01-05
大小
37.2 KB
许可证
暂无
适用于
所有网站

全能下载工具 - Universal Downloader

一个功能强大的油猴脚本,可以突破网站限制,下载网页上的所有媒体资源(视频、音频、图片、文档等),支持质量选择和自定义配置。

✨ 主要特性

🎯 核心功能

  • 全资源检测: 自动检测页面上的所有媒体资源

    • 视频(MP4, WebM, MKV, AVI, MOV, FLV 等)
    • 音频(MP3, WAV, OGG, AAC, FLAC 等)
    • 图片(JPG, PNG, GIF, WebP, SVG 等)
    • 文档(PDF, DOC, XLS, PPT 等)
    • 压缩包(ZIP, RAR, 7Z 等)
  • 智能网络拦截:

    • 拦截 Fetch API 请求
    • 拦截 XMLHttpRequest 请求
    • 监听 DOM 变化自动检测新资源
    • 捕获动态加载的媒体内容
  • 质量选择:

    • 支持多质量视频下载
    • 自动识别不同清晰度(1080p, 720p, 480p 等)
    • 可自定义默认质量偏好
  • 网站特殊处理:

    • YouTube - 提取多质量视频流
    • Bilibili - 支持 DASH 和 FLV 格式
    • Twitter/X - 获取原图高清版本
    • Instagram - 提取最高分辨率图片
    • TikTok - 视频资源提取
    • 更多网站持续支持中...

🎨 用户界面

  • 优雅的浮动按钮: 右下角圆形按钮,随时可访问
  • 侧边下载面板: 流畅的滑入/滑出动画
  • 分类资源展示: 按类型自动分组显示
  • 实时进度显示: 下载进度百分比实时更新
  • 配置持久化: 设置自动保存,重启浏览器依然保留

📦 安装方法

第一步:安装油猴脚本管理器

选择以下任一扩展安装到您的浏览器:

Tampermonkey(推荐)

Violentmonkey(替代选择)

第二步:安装脚本

  1. 打开 Tampermonkey 管理面板
  2. 点击 "+" 按钮创建新脚本
  3. 复制 universal-downloader.user.js 的全部内容
  4. 粘贴到编辑器中
  5. 按 Ctrl+S 保存
  6. 刷新网页,脚本即可生效

🚀 使用指南

基本使用

  1. 访问任意网页

    • 脚本会自动在所有网页上运行
    • 右下角会出现紫色的下载按钮(⬇)
  2. 打开下载面板

    • 点击右下角的浮动按钮
    • 或使用油猴菜单中的 "打开下载面板"
  3. 查看检测到的资源

    • 面板会自动列出所有检测到的资源
    • 资源按类型分组(视频、音频、图片等)
    • 显示资源来源网站标签
  4. 选择质量并下载

    • 如果资源有多个质量,会显示质量选择器
    • 选择想要的质量
    • 点击 "下载" 按钮
    • 观察进度条,等待下载完成
  5. 刷新资源列表

    • 如果页面动态加载了新内容
    • 点击面板底部的 "刷新资源列表" 按钮
    • 或使用油猴菜单中的 "刷新资源检测"

高级功能

配置默认质量

  1. 打开下载面板
  2. 在底部找到 "默认质量" 设置
  3. 选择:
    • 高质量 - 优先下载 1080p/720p
    • 中等质量 - 优先下载 720p/480p
    • 低质量 - 优先下载 480p/360p
  4. 设置会自动保存

在新标签打开资源

  • 每个资源项都有 "新标签打开" 按钮
  • 点击后会在新标签页中打开资源
  • 可以预览后再决定是否下载

使用控制台 API

打开浏览器控制台(F12),可以使用以下命令:

// 查看所有检测到的资源
UniversalDownloader.detector.getAllResources()

// 手动触发资源检测
UniversalDownloader.detector.detectExistingResources()

// 打开/关闭下载面板
UniversalDownloader.ui.showPanel()
UniversalDownloader.ui.hidePanel()

🌐 支持的网站

完全支持

  • YouTube - 多质量视频流提取
  • Bilibili - DASH/FLV 格式支持
  • Twitter/X - 原图高清下载
  • Instagram - 最高分辨率图片
  • 通用网站 - 标准媒体元素

部分支持

  • 🟡 腾讯视频 - 基础支持
  • 🟡 优酷 - 基础支持
  • 🟡 爱奇艺 - 基础支持
  • 🟡 抖音 - 基础支持
  • 🟡 TikTok - 基础支持

不支持

  • Netflix - DRM 加密保护
  • Disney+ - DRM 加密保护
  • HBO Max - DRM 加密保护

⚙️ 技术原理

资源检测机制

  1. DOM 扫描

    • 扫描所有 <video> 元素
    • 扫描所有 <audio> 元素
    • 扫描所有 <img> 元素
    • 扫描所有 <a> 下载链接
  2. 网络拦截

    • 劫持 window.fetch 方法
    • 劫持 XMLHttpRequest.prototype.open 方法
    • 分析请求 URL,提取媒体资源
  3. DOM 监听

    • 使用 MutationObserver 监听 DOM 变化
    • 自动检测动态添加的媒体元素
    • 实时更新资源列表
  4. 媒体劫持

    • 劫持 HTMLVideoElement.src 属性
    • 劫持 HTMLAudioElement.src 属性
    • 捕获通过 JavaScript 设置的媒体源

网站特定处理

不同网站使用不同的技术来保护和传输媒体内容,脚本针对主流网站实现了特殊处理:

  • YouTube: 解析 ytInitialPlayerResponse 提取视频流
  • Bilibili: 读取 window.__playinfo__ 获取 DASH/FLV 数据
  • Twitter: 替换图片 URL 参数获取原图
  • Instagram: 从 srcset 提取最高分辨率版本

下载实现

  1. 跨域下载

    • 使用 GM_xmlhttpRequest API
    • 绕过 CORS 限制
    • 支持跨域资源下载
  2. 进度跟踪

    • 监听 onprogress 事件
    • 计算下载百分比
    • 实时更新界面
  3. 文件保存

    • 使用 Blob API 创建文件对象
    • 创建临时 Object URL
    • 触发浏览器下载

🔧 开发和调试

项目结构

weiruan-All-in-one-download/
├── universal-downloader.user.js  # 主脚本文件
├── site-handlers.js              # 网站特定处理模块(参考)
├── test/
│   ├── test-page.html           # 测试页面
│   └── TEST_GUIDE.md            # 测试指南
├── README.md                     # 使用文档
└── LICENSE                       # 开源协议

开发环境设置

  1. 安装 Tampermonkey
  2. 启用开发者模式
  3. 在脚本中添加 @require 引用外部库(如需要)
  4. 使用浏览器控制台调试

调试技巧

  1. 查看日志

    // 脚本会输出详细的调试信息
    console.log('检测到资源:', resource)
    console.log('YouTube 处理器已激活')
    
  2. 检查资源列表

    // 在控制台运行
    UniversalDownloader.detector.getAllResources()
    
  3. 测试网站处理

    // 手动触发网站特定处理
    const handlers = new SiteHandlers()
    handlers.init(UniversalDownloader.detector)
    

🐛 常见问题

Q: 为什么某些视频无法下载?

A: 可能的原因:

  • 视频使用了 DRM 加密保护
  • 视频使用了特殊的流媒体协议(HLS/DASH)
  • 网站有防盗链保护
  • 需要登录或付费才能访问

Q: 下载的文件名是乱码怎么办?

A: 脚本会自动生成文件名,格式为 页面标题_时间戳.扩展名。如果包含特殊字符会被替换为 -

Q: 如何下载 HLS (m3u8) 格式的视频?

A: 脚本会检测 m3u8 链接,但下载 HLS 视频需要额外处理。建议使用专门的 HLS 下载工具。

Q: 某些网站检测不到资源?

A: 尝试以下方法:

  1. 播放视频/音频,让资源完全加载
  2. 点击 "刷新资源列表" 按钮
  3. 检查控制台是否有错误信息
  4. 某些网站可能需要特殊处理

Q: 如何关闭通知?

A: 目前通知功能默认开启,后续版本会添加开关选项。

Q: 脚本影响页面性能吗?

A: 脚本经过优化,对页面性能影响很小。如果遇到卡顿,可以临时禁用脚本。

📋 更新日志

v1.0.0 (2025-01-05)

  • ✨ 初始版本发布
  • ✅ 实现核心资源检测功能
  • ✅ 支持视频、音频、图片、文档下载
  • ✅ 添加质量选择功能
  • ✅ 实现网站特定处理(YouTube, Bilibili 等)
  • ✅ 创建用户界面和浮动按钮
  • ✅ 添加配置保存功能
  • ✅ 完成测试页面和文档

🤝 贡献

欢迎贡献代码和建议!

如何贡献

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

贡献指南

  • 添加新网站支持
  • 改进资源检测算法
  • 优化用户界面
  • 修复 Bug
  • 完善文档

📄 开源协议

本项目采用 MIT 协议开源,详见 LICENSE 文件。

⚠️ 免责声明

本工具仅供学习和研究使用,请遵守相关网站的服务条款和版权法律。下载的内容仅供个人使用,不得用于商业目的或侵犯他人权益。使用本工具产生的任何法律责任由使用者自行承担。

📧 联系方式

🌟 致谢

感谢所有为本项目做出贡献的开发者!


如果觉得这个项目有帮助,请给个 ⭐Star 支持一下!