离线包与整站抓取:不依赖网络的自包含 APK
什么时候需要离线运行
绝大多数 WebView 应用需要网络才能加载页面。但以下场景需要内容内置在 APK 里:
- 归档用途:把一个网站完整打包下来用于离线阅读或备份
- 弱网 / 无网环境:没有稳定网络连接的地区,用户仍然需要访问内容
- 内容控制:不需要担心原网站改内容或下线,APK 里是固定版本
创建流程
- 打开类型选择器,点「离线包」卡片
- 在专属表单里填目标 URL
- 设置抓取参数(深度、最大文件数、排除正则等)
- 在基本信息里填应用名称和图标
- 点击保存
保存后,抓取任务会在后台执行。完成后 WebToApp 会把抓到的全部内容打包成一个 ZIP,嵌入到 APK 内部。导出的 APK 通过 file:// 协议加载本地文件,不依赖网络。
抓取参数的影响
- 抓取深度:控制从起始 URL 向外爬多少层。深度 1 只抓起始页和它链接的页面;深度 3 会抓得比较彻底但时间也更长
- 最大文件数:防止无限抓取。达到上限后停止
- 排除正则:URL 匹配的页面不抓取(可以排除统计脚本、登录页、后台等)
- 图片 / JS / CSS:可以单独控制是否抓取这些资源类型
和「HTML」类型的区别
两者产出都是文件协议加载的 APK,但输入来源不同:
- 离线包:输入是一个 URL,WebToApp 自己去抓取
- HTML:输入是你已有的本地 HTML 文件或 ZIP 包
如果你已经有抓取好的内容(比如用 wget / HTTrack 离线保存过),直接用「HTML」类型,省掉重复抓取。
资源加密
离线包和 HTML 类型的 APK 支持启用 AES-256-GCM 资源加密——打包进 APK 的离线资源会被加密,需要 WebView 内核在运行时解密才能加载。适合需要保护离线内容的场景。加密需要系统 WebView,GeckoView 内核不支持。
注意事项
- 抓取速度取决于目标网站的页面数量和服务器响应时间,几百页的网站可能需要几分钟
- 某些站点有严格的反爬虫机制,可能会被 403 或 IP 限流。抓取前最好先用预览打开看看是否能正常访问
- 抓取到的内容体积过大(比如几十 MB 的图片)会显著增加 APK 体积。可以在抓取参数里限制图片大小