3步让任何网站离线可看:kage从安装到clone再到serve的完整教程
【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kage
kage 是一款免费的开源网站镜像工具(离线浏览神器):它驱动真实的无头 Chrome 渲染页面、剥离全部 JavaScript,并把 CSS、图片、字体下载到本地磁盘,让你离线看任何网站——无网络、无追踪、无广告脚本。这篇教程带新手走完 3 步闭环:安装 → clone → serve,10 分钟拥有一个可以断网打开的整站镜像。
为什么浏览器"另存为"不够用?💾
现代网页不是文档,而是程序:服务器发来的 HTML 常常是个空壳,你看到的内容全靠 JavaScript 在浏览器里现场拼装。所以"另存为"得到的副本往往是空白页,还残留着会偷偷"打电话回家"的追踪脚本。
kage 走另一条路:用真实浏览器把页面渲染到最终形态,截取快照,然后撕掉所有脚本,再把样式和图片本地化。落在磁盘上的就是一堆干净的.html文件,长得和线上网站一模一样,却一行代码都不运行。
第 1 步:安装 kage(单个二进制,跨平台)
kage 是单文件二进制,安装方式很多,新手推荐直接从源码构建:
方式一:克隆仓库 + make 构建(推荐)
git clone https://gitcode.com/gh_mirrors/kage6/kage cd kage make build # 生成 bin/kage构建说明见 Makefile。装好后运行kage --version验证一下。
方式二:包管理器一键安装
- macOS:Homebrew 一行安装
- Windows:Scoop
- Debian / Ubuntu / Fedora:官方 apt / dnf 仓库
- 不想装浏览器?官方容器镜像已内置 Chromium,一条
docker run就能克隆
各平台详细命令见官方文档:安装指南。
⚠️ 一个小前提:kage 靠驱动真实浏览器渲染页面,宿主机需要安装 Chrome 或 Chromium(会自动查找系统安装;找不到时首次使用会自行下载一份)。
第 2 步:kage clone —— 克隆任何网站
一条命令,开克隆:
kage clone paulgraham.com镜像默认落在$HOME/data/kage/paulgraham.com/,终端会实时显示页面数、资源数和错误数,结束时告诉你镜像位置。
clone 内部做的三件事 🕸️
- 渲染:无头 Chrome 加载页面,等网络安静(必要时滚动触发懒加载),截取"人眼看到的最终 DOM"
- 剥离:删掉所有
<script>、onclick等事件属性和javascript:链接,见 sanitize/sanitize.go - 本地化:下载样式表、图片、字体,把链接全部改写成本地相对路径,爬虫核心逻辑在 clone/cloner.go
常用参数:只爬你想爬的部分
大站点一定要圈定范围,防止"跑飞":
| 参数 | 作用 |
|---|---|
--max-pages 50 | 最多渲染 50 页 |
--max-depth 2 | 链接最多追 2 层 |
--scope-prefix /doc | 只爬这个路径及其子页面 |
--scroll | 自动滚动每页,触发懒加载图片 |
-f/--force | 删掉旧镜像,从头再来 |
# 先快速尝个鲜:前 50 页、2 层深度 kage clone example.com --max-pages 50 --max-depth 2 # 只克隆文档区 kage clone go.dev --scope-prefix /doc完整范围控制说明见 圈定爬虫范围指南。
中断了也不怕:断点续爬 ✅
按 Ctrl-C 会干净地保存进度(状态存在镜像的_kage/state.json),再跑一次同样的命令就会自动跳过已完成的页面继续爬;失败的页面也会自动重试。细节见 断点续爬指南。
kage 还是个"礼貌爬虫":默认遵守robots.txt,并用sitemap.xml给自己播种,默认只停留在种子域名内。
第 3 步:kage serve —— 把离线镜像看回来
镜像就是一个文件夹,但很多站点用了根相对链接(/style.css),直接双击打开会找不到资源。kage serve起一个本地静态服务器,让一切和真实主机上一模一样地解析:
kage serve $HOME/data/kage/paulgraham.com # 浏览器打开 http://127.0.0.1:8800实现非常简单直接,见 cli/serve.go。默认监听127.0.0.1:8800,用--addr可换端口,比如kage serve xxx --addr 127.0.0.1:9000。
打开后随便点:每个链接都指向已保存的页面,每张图片都解析到本地副本——全程零网络请求。
进阶彩蛋:把整个镜像压成一个文件 🎁
文件夹方便浏览、不便传播。kage pack可以把镜像压缩成单一产物:
kage pack paulgraham.com # -> paulgraham.com.zim(一个标准 ZIM 离线档案) kage open paulgraham.com.zim # 随时离线读回来- ZIM 格式:开放的离线档案标准,任何 ZIM 阅读器(如 Kiwix 生态)都能打开,十年后照样能读
--format binary:生成一个"本身就是网站"的可执行文件,发给别人无需装任何东西--app:包成双击即开的桌面 App,自动提取网站 favicon 当图标
图中效果来自webview构建标签:网站不再开在浏览器标签页,而是以自己的原生窗口呈现,完全一副"本地应用"的样子(见 viewer/webview.go)。打包完整玩法见 打包指南。
新手常见问题 FAQ
Q:克隆下来的网站还会运行 JavaScript 吗?不会。所有<script>、内联事件和javascript:链接在落盘前已被剥离,保存的页面不发起任何网络请求。
Q:镜像默认存在哪里?$HOME/data/kage/<域名>/,用-o可改输出根目录。
Q:爬大站点太慢?默认 4 个页面并发渲染(browser/pool.go 维护的浏览器池),可加--workers 8提升并发。
Q:想刷新已克隆的站点?kage clone paulgraham.com --refresh就地点重新渲染,抓到更新的内容。
总结:记住这 3 条命令就行
kage clone paulgraham.com # 1. 克隆 kage serve $HOME/data/kage/paulgraham.com # 2. 本地预览 kage pack paulgraham.com # 3.(可选)压成一个文件kage 的核心循环就这三步:克隆 → 预览 → 打包。完整的命令与参数速查见 CLI 参考,项目介绍见 README.md,新手路线可对照 快速上手指南。现在,挑一个你舍不得断网打开的网站,把它变成真正属于你自己的副本吧 🚀
【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kage
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考