Skip to main content

WebDAV server for AliyunDrive

Project description

aliyundrive-webdav

GitHub Actions PyPI Docker Image aliyundrive-webdav Crates.io

🚀 Help me to become a full-time open-source developer by sponsoring me on GitHub

阿里云盘 WebDAV 服务,主要使用场景为配合支持 WebDAV 协议的客户端 App 如 InfusenPlayer 等实现在电视上直接观看云盘视频内容, 支持客户端 App 直接从阿里云盘获取文件播放而不经过运行本应用的服务器中转, 支持上传文件,但受限于 WebDAV 协议不支持文件秒传。

如果项目对你有帮助,请考虑捐赠支持项目持续维护。

Note

本项目作者没有上传需求, 故上传文件功能测试不全面且没有持续迭代计划.

安装

可以从 GitHub Releases 页面下载预先构建的二进制包, 也可以使用 pip 从 PyPI 下载:

pip install aliyundrive-webdav

如果系统支持 Snapcraft 比如 Ubuntu、Debian 等,也可以使用 snap 安装:

sudo snap install aliyundrive-webdav

OpenWrt 路由器

GitHub Releases 中有预编译的 ipk 文件, 目前提供了 aarch64/arm/mipsel/x86_64/i686 等架构的版本,可以下载后使用 opkg 安装,以 nanopi r4s 为例:

wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.11.0/aliyundrive-webdav_1.11.0-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.11.0/luci-app-aliyundrive-webdav_1.11.0_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.11.0/luci-i18n-aliyundrive-webdav-zh-cn_1.11.0-1_all.ipk
opkg install aliyundrive-webdav_1.11.0-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_1.11.0_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_1.11.0-1_all.ipk

其它 CPU 架构的路由器可在 GitHub Releases 页面中查找对应的架构的主程序 ipk 文件下载安装, 常见 OpenWrt 路由器 CPU 架构如下表(欢迎补充):

路由器 CPU 架构
nanopi r4s aarch64_generic
小米 AX3600 aarch64_cortex-a53
斐讯 N1 盒子 aarch64_cortex-a53
Newifi D2 mipsel_24kc
Pogoplug arm_mpcore

Tips: 不清楚 CPU 架构类型可通过运行 opkg print-architecture 命令查询。

OpenWrt 配置界面

Koolshare 梅林固件

GitHub Releases 中有预编译包 aliyundrivewebdav-merlin-arm*.tar.gz , 目前提供了旧的 arm380 和兼容 arm384/386 固件的版本,可在下载后在软件中心离线安装。

梅林配置界面

Docker 运行

docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 \
  -v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ \
  -e REFRESH_TOKEN='your refresh token' \
  -e WEBDAV_AUTH_USER=admin \
  -e WEBDAV_AUTH_PASSWORD=admin \
  messense/aliyundrive-webdav

其中,REFRESH_TOKEN 环境变量为你的阿里云盘 refresh_tokenWEBDAV_AUTH_USERWEBDAV_AUTH_PASSWORD 为连接 WebDAV 服务的用户名和密码。

QNAP 威联通 NAS

QNAP 插件

qnap-aliyunpan-webdav by @iranee.

ContainerStation (Docker)

管理员登陆 NAS 后安装 ContainerStation 并启动服务,在 Management (管理) 标签中 Create Application (新建应用),配置如下

version: '3.3'
services:
  aliyundrive-webdav:
    container_name: aliyundrive-webdav
    restart: unless-stopped
    ports:
      - '8080:8080'
    environment:
      - 'REFRESH_TOKEN=mytoken...'
    image: messense/aliyundrive-webdav

其中 REFRESH_TOKEN 文档最下面说明;:8080 网盘访问映射端口,可以按需改为其他的。

点击 Create (创建)后启动,访问 http://nas地址:8080/ 即可看到你网盘的自动生成索引网页文件。

参考文档

rclone

由于 rclone 请求时总是会以上一个请求 URL 作为 Referer, 使用 rclone 时请使用 Web 版 refresh token 或者启动 aliyundrive-webdav 时增加 --no-redirect 参数.

为了避免重复上传文件,使用 rclone 时推荐使用 Nextcloud WebDAV 模式,可以支持 sha1 checksums. 另外需要配合 --no-update-modtime 参数,否则 rclone 为了更新文件修改时间还是会强制重新上传。

举个例子:

rclone --no-update-modtime copy abc.pdf aliyundrive-nc://docs/

命令行用法

$ aliyundrive-webdav --help
aliyundrive-webdav 1.11.0
WebDAV server for AliyunDrive

USAGE:
    aliyundrive-webdav [OPTIONS]
    aliyundrive-webdav <SUBCOMMAND>

OPTIONS:
        --cache-size <CACHE_SIZE>                    Directory entries cache size [default: 1000]
        --cache-ttl <CACHE_TTL>                      Directory entries cache expiration time in seconds [default: 600]
        --debug                                      Enable debug log
    -h, --help                                       Print help information
        --host <HOST>                                Listen host [env: HOST=] [default: 0.0.0.0]
    -I, --auto-index                                 Automatically generate index.html
        --no-redirect                                Disable 302 redirect when using app refresh token
        --no-self-upgrade                            Disable self auto upgrade
        --no-trash                                   Delete file permanently instead of trashing it
    -p, --port <PORT>                                Listen port [env: PORT=] [default: 8080]
        --prefer-http-download                       Prefer downloading using HTTP protocol
    -r, --refresh-token <REFRESH_TOKEN>              Aliyun drive refresh token [env: REFRESH_TOKEN=]
        --read-only                                  Enable read only mode
        --root <ROOT>                                Root directory path [default: /]
    -S, --read-buffer-size <READ_BUFFER_SIZE>        Read/download buffer size in bytes, defaults to 10MB [default: 10485760]
        --skip-upload-same-size                      Skip uploading same size file
        --strip-prefix <STRIP_PREFIX>                Prefix to be stripped off when handling request [env: WEBDAV_STRIP_PREFIX=]
        --tls-cert <TLS_CERT>                        TLS certificate file path [env: TLS_CERT=]
        --tls-key <TLS_KEY>                          TLS private key file path [env: TLS_KEY=]
    -U, --auth-user <AUTH_USER>                      WebDAV authentication username [env: WEBDAV_AUTH_USER=]
        --upload-buffer-size <UPLOAD_BUFFER_SIZE>    Upload buffer size in bytes, defaults to 16MB [default: 16777216]
    -V, --version                                    Print version information
    -w, --workdir <WORKDIR>                          Working directory, refresh_token will be stored in there if specified
    -W, --auth-password <AUTH_PASSWORD>              WebDAV authentication password [env: WEBDAV_AUTH_PASSWORD=]

SUBCOMMANDS:
    help    Print this message or the help of the given subcommand(s)
    qr      Scan QRCode

Note

注意:TLS/HTTPS 暂不支持 MIPS 架构。

Note

注意:启用 --skip-upload-same-size 选项虽然能加速上传但可能会导致修改过的同样大小的文件不会被上传

Note

注意:使用 App refresh token 时,WebDAV 客户端请求文件会默认返回 302 重定向而不经过中转。如需中转请启用 --no-redirect 选项。

获取 refresh_token

  • 自动获取: 登录阿里云盘后,控制台粘贴 JSON.parse(localStorage.token).refresh_token

  • 手动获取: 登录阿里云盘后,可以在开发者工具 -> Application -> Local Storage 中的 token 字段中找到。
    注意:不是复制整段 JSON 值,而是 JSON 里 refresh_token 字段的值,如下图所示红色部分: refresh token

  • 命令行获取: aliyundrive-webdav qr login

  • 使用移动端 App refresh token: 需要在其前增加 app: 前缀,如 refresh token 为 abcd 则填入 app:abcd

License

This work is released under the MIT license. A copy of the license is provided in the LICENSE file.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

aliyundrive_webdav-1.11.0-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3 Windows ARM64

aliyundrive_webdav-1.11.0-py3-none-win_amd64.whl (4.1 MB view details)

Uploaded Python 3 Windows x86-64

aliyundrive_webdav-1.11.0-py3-none-win32.whl (3.9 MB view details)

Uploaded Python 3 Windows x86

aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_x86_64.whl (4.1 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_i686.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_armv7l.whl (3.6 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_aarch64.whl (3.7 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

aliyundrive_webdav-1.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

aliyundrive_webdav-1.11.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

aliyundrive_webdav-1.11.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

aliyundrive_webdav-1.11.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (7.4 MB view details)

Uploaded Python 3 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

aliyundrive_webdav-1.11.0-py3-none-macosx_10_7_x86_64.whl (3.8 MB view details)

Uploaded Python 3 macOS 10.7+ x86-64

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 40a482536cd6f8144d6009280c8ebf0591983540df6ab8c58f5d68eb75a32b5f
MD5 876e5dd8c45ccec93e4c93259a6ccf00
BLAKE2b-256 11bb9b55f526acba922f9c14e006a4be6078b3bd909e9e2e8c831d8704e40958

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 082bad85bd525ecd2d1c3b4fb3894c45b76227de4d0ad6e13d1dd0f35c9bc4a8
MD5 6664b20610dd70a39e49599e84be4751
BLAKE2b-256 6171b3556cd01736c88b7befecb07150142e00916dd99a37a38e55c57d109158

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-win32.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 d5ead7d0cd3a789e16c45e015a4fda690e655f6e18e9bc2fbe0cc19d16b503d5
MD5 a0c68fc78e1a476f818e4583b5e77625
BLAKE2b-256 370ac96e435260d712256e01dcf6174a17444258651fef6b6ad2df0d0f0fcb59

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 91d8c90d1ea681f631ceabeea8aa54684af6e07a6240fd57cb33427ea8d58745
MD5 834dbe7466b1a43fdc36e71abc176cfe
BLAKE2b-256 1e360fc2181ad8d664fbee8d82e0e3494df001ae7f52b8fc4e223ac0d625f2e2

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 892813efcb5004cb59e5f53ecf2ee3932a69b1f41aed345ed5481918b981bb51
MD5 628786f35ca6869b83b0177e890d7fd0
BLAKE2b-256 b2348ca218ba7e2cda464f13103ae5020428f60870726934aa5b45923f64c49a

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 902dff5021d6d22ce9230667c9cdd7b60c3c8c05bc5eefc84b6c30c7f7128d79
MD5 19e643c05f1a6ce4005361f8ab8f5302
BLAKE2b-256 a3ed56d3f3b1c395209be838ad60918f0cabf2c04f7a9e426eb680afefb1fae1

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8bf9104ad897886c888a93a9da172adcfaff9c6b9a28cbbe7dfcbbac01a99a3e
MD5 16f22a621a35336f81b81379d9e7cc97
BLAKE2b-256 1763c94836e9d03bc68609c827f5e28e64df93142a5a31802fef68085d604f00

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 77fe55732cdde0d2a6bfcf5d1443da2a8e9daf354fab7e934fd612be4f00f5e2
MD5 f7dc1b800e47720c74536ed10052b7da
BLAKE2b-256 36f79f8e4ff67a75c6c5363d7aec4bce0da05599eb07a326bcbf7f140b966d53

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2dee576ef3aa191c283dc00312c79d581157fc92a42e830f32e27a6fda572e4e
MD5 4ee0df900da28ab6d66b3d5f9ce69a1f
BLAKE2b-256 6a0ba487e1372d0dbe09d3383423aba5e310d293967b058dcdd771091f282850

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 54278cf9e125c0229f81ad92edd442b18ee335b22e40aaf1872c4e9a634e5a8e
MD5 c3bb9279de7546abd128b858b341e9fe
BLAKE2b-256 14297a01e92f3d8ffd6d74b9788d4307d996ec24794976f62ccec72f0269c04f

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 ba559e03a5492dc1e99e9c8133a206202791e08798ec475e1ade930b1468b7db
MD5 4dc9d1c55a9787456fa4a02afa11c6ba
BLAKE2b-256 a7c780a3288bd1df8b9affcd86b57c524330e2a47913fcec15b1251072d5f932

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 acd1a9195518ed83c81800105f7dfde1d46253b33d50b9ed5823cad9415a1c96
MD5 c9a0c93eecf13610ec4e2522fedb822e
BLAKE2b-256 39668ba69c164347a5c7b3e898f6fb001122f203394acca41fb82d3bbc0439a1

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.11.0-py3-none-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.11.0-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 1217799099f02fb7ce043b14557fe22b45d3b8ac1a203b131d30037c9f581e07
MD5 63a4629439730c58a2571c7bc28a2299
BLAKE2b-256 c1d3cc602f40c3f957bb50cd2c34a8168ad64e5623c5bbf799a42f76b3f3e2ed

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page