aliyundrive-webdav One Year Later

Time flies, 我的阿里云盘 WebDAV 项目马上就满一年了。

WX20220814-134741@2x.png

功能迭代

过去一年,断断续续地开发和维护,增加了一些新功能,这里简单盘点一下。

1、阿里云 PDS 支持

阿里云相册与网盘服务(PDS)是阿里云盘使用的底层能力,在阿里云上公开售卖,其 API 接口和阿里云盘的接口基本类似,支持起来比较简单,命令行传入 --domain-id 参数即可使用。如果有自建网盘的需求,使用这个功能可以获得接近阿里云盘的体验。

2、只读模式

WebDAV 协议支持读写,有用户反馈配置给家里长辈观看时,不知怎的把文件夹都删除了。通过增加只读模式禁止写操作,避免出现这里情况。命令行传入 --read-only 参数即可开启。

3、HTTPS 支持

基于 rustls 开发了 TLS/HTTPS 服务端支持,低端设备如路由器上可能不会专门部署一个 Nginx 来做 TLS termination,内置 HTTPS 支持方便使用。

目前还没有做自动获取比如 Let's Encrypt 的 HTTPS 证书功能,可以用 certbot 或者 acme.sh 等工具签发证书后使用。

未来一个可能有点意思的扩展是通过 Tailscale 获得私有的 tailnet 的 HTTPS 证书,将服务部署在 tailnet 中随时随地远程安全访问。

4、iOS Live Photo 下载

阿里云盘的接口没有提供原始的 iOS Live Photo (.livp 格式)下载地址,导致尝试下载此类文件时 500 错误。这个问题可能是 PDS 或者阿里云盘的锅,很难理解为什么不提供 .livp 的下载地址,其本质上只是个包含一个视频和多个图片的 zip 压缩包。

image.png

通过识别下载请求的文件格式为 .livp 然后实时下载对应的视频和图片文件,并将他们组合生成为一个新的 .livp 文件实现了 .livp 格式文件的下载的功能,不过缺点就是会丢失文件创建/修改时间的信息,对于文件同步的场景就很不友好。

5、扫码登录

一直以来都需要从阿里云盘 Web 端获取 refresh token 来完成登录授权,整个流程对小白用户来说还是过于复杂。

1.4.0 版本 @gngpp 贡献了命令行扫码登录功能,可以直接使用阿里云盘移动端 App 扫描二维码登录并自动获取 refresh token

image.png

而后在 1.7.1 版本中,给 OpenWrt 配置后台也增加了扫码登录功能,扫码后自动填充 refresh token 到输入框中,非常便捷

image.png

6、Checksums

WebDAV 协议一直被诟病的缺点之一是不支持 checksums,这意味着用户无法验证上传/下载文件的完整性,owncloud 增加了私有的 oc:checksums 属性扩展实现了文件完整性校验,这个扩展后来也被 Nextcloudrclone 支持。

1.8.4 版本也增加了对 oc:checksums 扩展的支持,从而在通过 rclone 挂载时可以校验文件完整性。由于阿里云盘接口只返回了 sha1,目前推荐使用 rclone 的 Nextcloud WebDAV 模式,不仅可以校验下载文件的完整性,也可以自动跳过上传相同 sha1 值的文件。

项目洞察

image.png

过去一年项目在 GitHub 上获得了 4900+ 个 stars,稳定增长。

image.png

总共有 11 个代码贡献者,相对来说还是比较少的,Rust 语言的门槛相对较高。GitHub 上产生了 217 个 issues 和约 190 个讨论区主题。

image.png

GitHub 仓库每天 PV 约 1500, UV 约 600.

image.png

B 站和 YouTube 上的一些视频教程带来了不少流量,比如

Fun Facts

为什么选择 Rust 语言?

TLDR: I like it.

其实 Rust 语言标榜的内存安全、零开销抽象、fearless concurrency 等特性在这个客户端项目上并不是特别重要,你用 Java、Go、Python 来写也没毛病,实际上也确实有很多其他语言版本的实现。

Rust 对主流平台、CPU 架构的优秀的支持是这个项目流行的关键。除了常见的 x86、x86_64 架构,还支持 arm64、armv7、armv6、armv5、mips 和 mipsel 等 CPU 架构,特别是 mips 和 arm 架构在路由器上使用的很多。

能不能赚钱?

显然不能。

作为一个 side project,主要还是满足自己的使用需求。有时候解决一些用户的问题/需求,会收获一些打赏,大部分人都是白嫖🙄。项目流行起来以后,也有了个广告合作,够一个月两杯咖啡罢了。

Some rights reserved
Except where otherwise noted, content on this page is licensed under a Creative Commons Attribution-NonCommercial 4.0 International license.