基于 Cloudflare 的免费网页归档和分享工具

2024年11月01日19:02:04 科技 1796

基于 Cloudflare 的免费网页归档和分享工具 - 天天要闻

Web Archive 是一个网页归档工具,包含以下几个部分:

  • 浏览器插件:将网页保存为网页快照,并上传到服务端。
  • 服务端: 接收浏览器插件上传的快照,并存储在数据库和存储桶中。
  • web 客户端: 查询快照并展示。

服务端基于 Cloudflare Worker 的全套服务,包含 D1 数据库、R2 存储桶。

Why

大多数网页归档工具,比如 archivebox,都是基于服务器调用无头浏览器抓取的方式进行归档。
这种做法的弊端是 知乎、medium 这种需要登录的网站操作很麻烦,需要配置 token 或 cookie。
同时无头浏览器对服务器的要求也比较高,大多数都是 nas 用户在使用。
web-archive 是一个完全免费、无门槛的方案,而且 Cloudflare 可以非常方便的将数据迁移回本地转为 self-host。

github:https://github.com/Ray-D-Song/web-archive

feat & roadmap

  • 文件夹分类
  • 页面预览图
  • 标题关键字查询
  • 橱窗,可以分享自己抓取的页面
  • 移动端适配
  • tag 分类系统
  • 将页面保存为 markdown

部署指南

Github Actions 一键部署(推荐)

基于 Cloudflare 的免费网页归档和分享工具 - 天天要闻

点击上面的按钮,按照 Cloudflare 的指引完成部署。

Important

R2 存储桶是需要在 Cloudflare 面板上手动开通的功能,请开通后再进行部署或者失败后 re-run Github Actions。 仅需开通 R2 功能,不需要创建存储桶,存储桶会在部署时自动创建。

Note

创建令牌时,直接选择 编辑 Cloudflare Workers 模版,再手动添加 D1 编辑 权限。

基于 Cloudflare 的免费网页归档和分享工具 - 天天要闻

部署后请尽快登录,首个登录的用户会被设置为管理员。


命令部署

要求本地安装了 node 环境。
命令部署时更新比较麻烦, 推荐实用 Github actions 部署。

0. 下载代码

在 release 页面下载最新的 service.zip,解压后在根目录执行后续操作。

1. 登录

npx wrangler login

2. 创建 r2 存储桶

npx wrangler r2 bucket create web-archive

成功输出:

 ⛅️ wrangler 3.78.10 (update available 3.80.4)
--------------------------------------------------------

Creating bucket web-archive with default storage class set to Standard.
Created bucket web-archive with default storage class set to Standard.

3. 创建 d1 数据库

# 创建数据库
npx wrangler d1 create web-archive

执行输出:

 ⛅️ wrangler 3.78.10 (update available 3.80.4)
--------------------------------------------------------

✅ Successfully created DB 'web-archive' in region UNKNOWN
Created your new D1 database.

[[d1_databases]]
binding = "DB" # i.e. available in your Worker on env.DB
database_name = "web-archive"
database_id = "xxxx-xxxx-xxxx-xxxx-xxxx"

拷贝最后一行,替换 wrangler.toml 文件中 database_id 的值。

然后执行初始化 sql:

npx wrangler d1 execute web-archive --remote --file=./init.sql

成功输出:

 Executing on remote database web-archive (7fd5a5ce-79e7-4519-a5fb-2f9a3af71064):
 To execute on your local development database, remove the --remote flag from your wrangler command.
Note: if the execution fails to complete, your DB will return to its original state and you can safely retry.
├  Uploading 7fd5a5ce-79e7-4519-a5fb-2f9a3af71064.0a40ff4fc67b5bdf.sql
│  Uploading complete.
│
 Starting import...
 Processed 9 queries.
 Executed 9 queries in 0.00 seconds (13 rows read, 13 rows written)
   Database is currently at bookmark 00000001-00000005-00004e2b-c977a6f2726e175274a1c75055c23607.
┌────────────────────────┬───────────┬──────────────┬────────────────────┐
│ Total queries executed │ Rows read │ Rows written │ Database size (MB) │
├────────────────────────┼───────────┼──────────────┼────────────────────┤
│ 9                      │ 13        │ 13           │ 0.04               │
└────────────────────────┴───────────┴──────────────┴────────────────────┘

4. 修改 BEARER_TOKEN

BEARER_TOKEN 是访问 web-archive 的凭证,相当于密码,修改 wrangler.toml 文件中 BEARER_TOKEN 的值。

5. 部署服务

# 部署服务
npx wrangler pages deploy

成功输出:

The project you specified does not exist: "web-archive". Would you like to create it?
❯ Create a new project
✔ Enter the production branch name: … dev
✨ Successfully created the 'web-archive' project.
▲ [WARNING] Warning: Your working directory is a git repo and has uncommitted changes

  To silence this warning, pass in --commit-dirty=true

  Uploading... (3/3)

✨ Success! Uploaded 3 files (3.29 sec)

✨ Compiled Worker successfully
✨ Uploading Worker bundle
✨ Uploading _routes.json
 Deploying...
✨ Deployment complete! Take a peek over at https://web-archive-xxxx.pages.dev

使用指南

在 release 页面下载最新的 extension.zip,解压后安装到浏览器中。
首次安装后,需要输入 API 地址和密钥,API 地址是服务地址,密钥就是首个用户(管理员)的密码。

在文件夹页面,你可以设置某个页面是否在橱窗中展示。
橱窗地址:/#/showcase/folder

科技分类资讯推荐

小米王化:“传小米与徕卡终止合作”系谣言 - 天天要闻

小米王化:“传小米与徕卡终止合作”系谣言

今日有传闻称,小米与徕卡的合作关系即将结束。对此,小米公关总经理王化回应称:“上次是2023年6月1日,番茄发了个微博说小米14就是最后一代了。我转发了文案搭配的是“这就胡说了”,这次居然进阶了,来了个据报道,还有作者……我的回复也需要进阶,请大家笑纳:这还是胡说。”...
微信重大更新! - 天天要闻

微信重大更新!

7月4日,腾讯宣布微信重大更新——优化聊天记录备份。据了解,优化后,用户可以将手机聊天记录备份至外部存储设备。聊天记录还可以选择“自动备份”。
混动轿车终局首选,“智能电混四驱轿车”领克10 EM-P全球首秀 - 天天要闻

混动轿车终局首选,“智能电混四驱轿车”领克10 EM-P全球首秀

在新能源市场“价格战”白热化的当下,领克只卷价值,卷技术,卷产品。在此背景下,领克首款中大型豪华运动轿车——领克10 EM-P迎来首秀亮相。新车定位“智能电混四驱轿车”,标配四驱和激光雷达,首次将高端配置一同下放至20万级主流汽车市场。这种“顶配变标配”的平权
百年MG加速新能源布局:2年13款新车矩阵,全面ALL IN电动化赛道 - 天天要闻

百年MG加速新能源布局:2年13款新车矩阵,全面ALL IN电动化赛道

6月30日,拥有百年底蕴的MG品牌,正式宣布全面 All in 新能源。背靠上汽集团雄厚的技术实力,规划未来 2 年推出 13 款全新新能源车型,产品矩阵覆盖纯电、插混、增程三种动力形式,轿车、SUV、跑车、猎装车四大车身类型,这场转型不仅是动力革新,更是百年
科技赋能绿色发展 中国为全球探新路 - 天天要闻

科技赋能绿色发展 中国为全球探新路

新华社贵阳7月6日电 题:科技赋能绿色发展 中国为全球探新路 新华社记者周宣妮 “很期待看到中国无人驾驶汽车如何从贵州工厂走向欧洲乃至世界,未来也许像我一样不会开车的人也能在AI辅助下安全驾驶。”来自塞浦路斯的巴黎政治大学学生费奥多尔·德米特连科在贵州试乘无人驾驶巴士时如此感慨。 2日至7日,在贵州的青山绿水...
小米YU7今日交付,雷军向首批车主交车,并亲手开车门 - 天天要闻

小米YU7今日交付,雷军向首批车主交车,并亲手开车门

7月6日,小米YU7正式开启全国交付,覆盖全国58个城市。雷军发文表示:今天下午,小米YU7正式交付首批车主。希望这台车,陪伴每一个热爱生活的你和你们,解锁更多美好体验。感谢大家的支持与信任!有多位网友发布视频和照片,今日雷军在北京小米科技园亲手给首批YU7车主交付新车,并为他们开车门。6月26日19:00,小米首款SU...