SiteBackup - 网页备份工具

11 条回复
87 次浏览

一个基于 Wails 框架开发的网页备份工具,支持完整备份网页内容,包括 HTML、CSS、JavaScript、图片等所有资源,并提供隐私清理功能。

Star History

Star History Chart

⚠️ 重要声明

本工具仅供学习和研究使用,请勿用于任何违法活动!

  • 🎓 学习目的:仅用于学习网页技术和备份个人网站
  • 📋 遵守规则:请遵守目标网站的 robots.txt 和使用条款
  • 🚫 禁止滥用:不得用于恶意爬取、侵犯版权或其他违法行为
  • ⚖️ 自负责任:使用者需自行承担使用责任

🚀 功能特性

核心功能

  • 📦 完整备份:备份网页的所有资源文件(HTML、CSS、JS、图片、视频等)
  • 🛡️ 隐私清理:自动移除第三方跟踪代码、统计代码、广告代码
  • 📊 实时进度:显示备份进度和文件下载状态
  • 🗜️ ZIP 打包:自动将备份文件打包为 ZIP 格式
  • 📁 目录选择:支持选择自定义保存目录
  • 📱 响应式布局:栅格布局,适应不同窗口大小
  • 🌍 跨平台:支持 Windows、macOS、Linux

界面特性

  • 🎨 现代化 UI:基于 Naive UI 的美观界面
  • 📋 详细配置:丰富的备份选项配置
  • 📈 进度监控:实时显示文件下载状态
  • 🔍 文件详情:可查看每个文件的下载进度

⚠️ 功能限制

请注意:本工具主要适用于简单的静态网页备份

技术限制

  • 动态内容:无法备份需要 JavaScript 动态加载的内容
  • 懒加载:不支持懒加载(lazy loading)内容
  • 用户交互:无法处理需要用户交互才显示的内容
  • SPA 路由:不支持单页应用(SPA)的动态路由内容
  • 登录内容:无法备份需要登录才能访问的内容
  • 复杂框架:对于 React、Vue、Angular 等现代框架构建的复杂应用效果有限

适用场景

  • 静态网站:个人博客、企业官网等静态页面
  • 简单页面:新闻文章、产品介绍页面
  • 文档网站:技术文档、帮助页面
  • 传统网站:基于传统 HTML/CSS/JS 的网站

🛡️ 隐私清理功能

自动清理的内容

  • 📊 统计代码:Google Analytics、百度统计、CNZZ、Mixpanel、Segment 等
  • 👁️ 跟踪代码:Facebook Pixel、TikTok Pixel、Snapchat Pixel、Hotjar、CrazyEgg、Clarity 等
  • 📢 广告代码:Google Ads、DoubleClick、Taboola、Outbrain、PopAds、PropellerAds、AdCash 等
  • 🏷️ 标签管理器:Google Tag Manager (GTM) 等
  • ⚠️ 恶意标签:base 标签劫持、自动跳转、来源伪造、恶意重定向等

安全防护

  • 🔒 链接劫持防护:自动删除所有 base 标签,防止恶意网站劫持页面中的所有相对链接
  • 🚫 自动跳转防护:删除 meta refresh 标签,防止页面自动跳转到钓鱼网站或恶意网站
  • 🎭 来源伪造防护:删除 meta referrer 标签,防止恶意网站伪造访问来源
  • 🔄 重定向防护:检测并删除包含恶意重定向的 JavaScript 代码

🛠️ 技术栈

前端技术

  • 框架:Vue 3 + TypeScript
  • UI 库:Naive UI
  • 构建工具:Vite
  • 路由:Vue Router 4
  • 图标:Ionicons 5

后端技术

  • 语言:Go 1.23+
  • 框架:Wails v2
  • 网页解析:goquery
  • 文本编码:golang.org/x/text
  • HTTP 客户端:Go 标准库

开发工具

  • 包管理:Go Modules + npm
  • 类型检查:TypeScript + Vue TSC
  • 代码格式化:内置支持

📋 系统要求

开发环境

  • Go:1.23 或更高版本
  • Node.js:18 或更高版本
  • Wails CLI:v2 最新版本

运行环境

  • Windows:Windows 10/11 (x64)
  • macOS:macOS 10.15+ (Intel/Apple Silicon)
  • Linux:主流发行版 (x64)

🚀 快速开始

1. 克隆项目

复制
git clone https://github.com/adiudiuu/site_backup.git
cd site_backup

2. 安装依赖

复制
# 安装 Go 依赖
go mod tidy

# 安装前端依赖
cd frontend
npm install
cd ..

3. 开发运行

复制
# 使用 Makefile(推荐)
make run

# 或直接使用 Wails CLI
wails dev

4. 构建发布

复制
# 构建 Windows 版本
make build-win

# 构建 macOS 版本(需要在 macOS 上运行)
make build-mac

# 或使用 Wails CLI
wails build

📖 使用指南

基本使用步骤

  1. 输入网址:在目标网址框中输入要备份的网页 URL
  2. 选择目录:点击"选择目录"按钮,选择备份文件的保存位置
  3. 配置选项
    • 选择要备份的内容类型(图片、样式、脚本、视频)
    • 选择要清理的隐私内容(统计代码、跟踪代码、广告代码)
    • 调整高级选项(超时时间、最大文件数、并发数)
  4. 开始备份:点击"开始备份"按钮
  5. 监控进度:实时查看备份进度和文件下载状态
  6. 完成备份:备份完成后,ZIP 文件将保存到指定目录

使用建议

  • 🎯 优先选择:静态网站或博客进行备份
  • ⚠️ 避免备份:复杂的动态网站或 SPA 应用
  • 🧪 先测试:测试小页面后再备份大型网站
  • ⏱️ 注意频率:注意网站的访问频率限制,避免过于频繁的请求
  • 📏 合理配置:根据网络情况调整超时时间和并发数

故障排除

  • 网络错误:检查网络连接和 URL 是否正确
  • 访问被拒:可能遇到反爬虫机制,建议稍后重试
  • 文件过大:调整最大文件数限制或增加超时时间
  • 权限问题:确保对保存目录有写入权限

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

开发流程

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • Go 代码遵循 gofmt 格式
  • TypeScript 代码使用 ESLint 规范
  • 提交信息使用英文,格式清晰

📄 许可证

本项目采用 GNU General Public License v3.0 许可证。

这意味着:

  • ✅ 可以自由使用、修改和分发
  • ✅ 可以用于商业目的
  • ⚠️ 修改后的代码必须开源
  • ⚠️ 必须保留原始许可证和版权声明
  • ⚠️ 不提供任何担保

详细信息请查看 LICENSE 文件。

⚖️ 免责声明

  • 本工具仅供学习和研究使用
  • 使用本工具产生的任何法律后果由使用者自行承担
  • 开发者不承担任何责任
  • 请确保您的使用行为符合当地法律法规和目标网站的使用条款
  • 请尊重网站的 robots.txt 文件和访问限制

📞 联系方式


OP

不知道,我是 goole 登录的,google 图片是动态的,过来自带就动了

相比于 Chrome 的各种下载网页的插件,在易用性上来说有点比不过啊。

OP

这个是我从另外一个桌面应用抽出来的一个功能,当时写桌面应用的时候就专门将这块独立出来。
为啥写这个是因为有些东西天天让人学习写别人的网站,我也是对比了很多现有很多的类似学习工具,一言难尽,于是就自己写了一个。
确实跟插件来比,没那么易用。

题外话,为啥 OP 的头像可以是动图,我的动不了,我也传的动图 GIF

发表一个评论

R保持