/aliyundrive-webdav

阿里云盘(https://www.aliyundrive.com/) 的webdav协议开源实现,支持安卓、Linux、树莓派、Docker、Windows、macOS部署, 并附带JAVA SDK支持二次开发

Primary LanguageJava

image image

说明

1.1.0版本支持阿里Teambition网盘的webdav协议

2.x版本仅支持阿里云盘, 不再维护Teambition网盘版本

3.x版本支持阿里云盘OpenApi

3.4.0及以上版本默认支持直连模式下载

4.0.0及以上版本支持web文件管理以及访问备份盘和资源库

2024.07.18 阿里云盘正式推出了三方权益包! 至此, 非权益包用户, 非SVIP会员用户, 没有高速流量! 均被阿里云盘下载限速500kb/s单节点, 每个用户限制3个连接, 超出返回403,

2024.07.19 已知, 目前版本nPlayer、Kodi、Potplayer、VLC、infuse均受3个连接影响导致不能播放、播放中断、403错误等, 目前需等候阿里云盘官方解决.

目前阿里云盘更新了下载分片数限制导致了上述问题(据说), 官方似乎不愿意适配上述问题, 需要用..?, 至此, 建议去Alist+115哦, 江湖有缘再见!

目录

aliyundrive-webdav

本项目实现了阿里云盘的webdav协议, 只需要简单的配置一下, 就可以让阿里云盘变身为webdav协议的文件服务器。 基于此, 你可以把阿里云盘挂载为Windows、Linux、Mac系统的磁盘, 可以通过NAS系统做文件管理或文件同步, 更多玩法等你挖掘

直接运行(Windows/Linux/macOS/Android)

点击下载

  • Windows
chcp 65001
aliyundrive-webdav-windows-amd64.exe
  • Linux
./aliyundrive-webdav-linux-*
  • macOS

./aliyundrive-webdav-darwin-*

java -jar ./aliyundrive-webdav.jar
  • WebApi
./aliyundrive-webdav-darwin-x86_64 --aliyundrive.driver=WebApi

Jar包运行

建议自己下载源码编译, 以获得最新代码

java -jar webdav.jar

容器运行

点击展开
mkdir $(pwd)/conf
docker run -d \
  --name=aliyundrive-webdav \
  --restart=always -p 8080:8080  \
  -v /etc/localtime:/etc/localtime \
  -v $(pwd)/conf:/conf \
  -e TZ="Asia/Shanghai" \
  -e ALIYUNDRIVE_DRIVER=OpenApi \
  -e ALIYUNDRIVE_DOWNLOAD_PROXY_MODE=Auto \
  -e ALIYUNDRIVE_REFRESH_TOKEN="your refreshToken" \
  -e ALIYUNDRIVE_AUTH_PASSWORD="admin" \
  eritpchy/aliyundrive-webdav
  • /conf 挂载卷自动维护了最新的refreshToken, 建议挂载
  • ALIYUNDRIVE_AUTH_PASSWORD 是admin账户的密码, 建议修改

Docker-Compose

点击展开
version: "3.0"
services:
  aliyundrive-webdav:
    image: eritpchy/aliyundrive-webdav
    container_name: aliyundriver
    environment:
      - TZ=Asia/Shanghai
      - ALIYUNDRIVE_DRIVER=OpenApi
      - ALIYUNDRIVE_DOWNLOAD_PROXY_MODE=Auto
      - ALIYUNDRIVE_REFRESH_TOKEN=refreshToken
      - ALIYUNDRIVE_AUTH_USER_NAME=admin
      - ALIYUNDRIVE_AUTH_PASSWORD=admin
    volumes:
      - ./docker/conf:/conf
    ports:
      - 6666:8080
    restart: always
  • "refreshToken"请根据下文说明自行获取。
  • "ALIYUNDRIVE_AUTH_USER-NAME"和"ALIYUNDRIVE_AUTH_PASSWORD"为连接用户名和密码, 建议更改。
  • "./docker/conf/:/conf", 可以把冒号前改为指定目录, 比如"/homes/USER/docker/alidriver/:/conf"。
  • 删除了"/etc/localtime:/etc/localtime", 如有需要同步时间请自行添加在environment下。
  • 端口6666可自行按需更改, 此端口为WebDAV连接端口,8080为容器内配置端口, 修改请量力而为。
  • 建议不要保留这些中文注释, 以防报错, 比如QNAP。

Kubernetes

点击展开
# 参考根目录内中的[k8s_app.yaml](k8s_app.yaml), 需要文件中修改container的环境变量值。  
# use this to deploy in truenas scale
sudo k3s kubectl apply -f k8s_app.yaml
# or other k8s cluster
sudo kubectl apply -f k8s_app.yaml

连接说明

4.0.0及以上版本

文件管理: http://{ip地址}:{端口号}/

Webdav: http://{ip地址}:{端口号}/dav

例如: http://127.0.0.1:8080/dav

注意: Webdav路径为 /dav 必须填写

4.0.0之前版本

Webdav: http://{ip地址}:{端口号}

参数说明

--aliyundrive.refresh-token
    阿里云盘的refreshToken, 获取方式见下文
--server.port
    非必填, 服务器端口号, 默认为8080
--aliyundrive.auth.enable=true
    是否开启Webdav账户验证, 默认开启
--aliyundrive.auth.user-name=admin
    Webdav账户, 默认admin
--aliyundrive.auth.password=admin
    Webdav密码, 默认admin
--aliyundrive.work-dir=./conf
    token挂载路径, 如果在同一个路径多开, 需修改此配置
--aliyundrive.driver=OpenApi
    驱动引擎, 默认官方OpenApi, 可选WebApi
--aliyundrive.download-proxy-mode=Auto
    文件下载模式, 默认Auto, 自动模式, 默认直连模式, 客户端不支持直连模式时使用代理模式
    可选Direct, 强制直连模式, 使用此模式, 一些客户端不兼容, 将会直接报错400,302,403等错误, 详见 '客户端兼容性'
    可选Proxy, 代理模式, 文件下载由程序中转, 3.3.0以前版本默认模式, 如遇问题或报上述错误可尝试使用Proxy模式
    

SDK使用

//依赖
compileOnly "org.projectlombok:lombok:1.18.26"
annotationProcessor "org.projectlombok:lombok"
implementation "com.squareup.okhttp3:okhttp:3.12.13" //api19
implementation "com.squareup.okhttp3:logging-interceptor:3.12.13" //api19
implementation "com.google.code.gson:gson:2.8.9"

//主要
implementation "net.xdow:aliyundrive-sdk-openapi:2.0.5"
implementation "net.xdow:aliyundrive-sdk-webapi:2.0.5"

//可选
implementation "net.xdow:webdav:2.0.5"
implementation "net.xdow:webdav-jakarta:2.0.5"
implementation "net.xdow:webdav-javax:2.0.5"
implementation "net.xdow:aliyundrive-webdav-internal:2.0.5"
implementation "net.xdow:aliyundrive-android-core:2.0.5"
implementation "net.xdow:jap-http:2.0.5"
implementation "net.xdow:jap-http-jakarta-adapter:2.0.5"
implementation "net.xdow:jap-http-javax-adapter:2.0.5"

SDK基础用法

AliyunDrive.newAliyunDrive()

QQ群

QQ交流群: [789738128]

新手教程

imaage

客户端兼容性

客户端 下载 上传 备注
群辉Cloud Sync 代理模式 建议使用单向同步
Rclone 🚀直连模式 推荐, 支持各个系统, 直连模式需要添加参数,
见下方配置说明
Mac原生 🚀直连模式
Transmit 🚀直连模式
Windows原生 🚀直连模式 不推荐!有4GB文件传输限制,首次使用还需配置http,
见下方'注意事项'
RaiDrive 🚀直连模式 Windows平台下建议用这个
WinSCP 6.1.1+ 🚀直连模式 6.1.1以下版本不支持直连模式
Fileball 🚀直连模式
nPlayer 🚀直连模式 推荐
MT管理器 🚀直连模式 推荐
ES文件浏览器 🚀直连模式
Kodi 20.0+ 🚀直连模式 2023年后编译版本可用直连模式
IINA 2.0.1+ 🚀直连模式 macOS 推荐
MXPlayer 🚀直连模式
jetAudio 🚀直连模式 受jetAudio限制,端口号只能为80(http) 或 443(https),
安卓端不可直接监听以上端口!
VLC 🚀直连模式
Zotero 🚀直连模式
  • 所有客户端均默认支持代理模式
  • 🚀直连模式: 由于阿里云盘目前直链有效期为15分钟, 部分播放器遇阿里云盘链接失效不会主动回webdav请求, 常见表现为播放停止, 无法拖动进度条, 中途直接切换下一集等等, 以上有标注的播放器均默认禁用直连模式, 普通连续下载文件不受影响
  • 请勿使用超过8个线程对直链进行下载, 大概率封号
  • 请勿分享直链, 永封

Rclone 配置说明

  • Rclone 1.62.2及以下版本应选择Vendor为Nextcloud以支持rclone自身的数据校验功能
  • Rclone 1.63.0及以上版本(目前为beta版本, 点击前往下载beta版) 请选择Vendor为Fastmail Files, 如选择Vendor为Nextcloud, 则advanced config中nextcloud_chunk_size应设置为0, 否则使用时报错
  • Vendor 选择为Other无数据校验功能
  • Vendor 选择为Owncloud, 因Rclone本身只校验md5无数据校验功能
  • 直连模式需要在Rclone 命令行参数添加 --header="Referer:", 否则报错403
例如: R:\rclone1.63.0.exe --header="Referer:" copy test:/demo/demo.mkv R:/test

浏览器获取refreshToken方式(仅WebApi需要)

方式1 1. 先通过浏览器(建议chrome)打开阿里云盘官网并登录:https://www.aliyundrive.com/drive/ 2. 登录成功后, 按F12打开开发者工具, 点击Application, 点击Local Storage, 点击 Local Storage下的 [https://www.aliyundrive.com/](https://www.aliyundrive.com/), 点击右边的token, 此时可以看到里面的数据, 其中就有refresh_token, 把其值复制出来即可。(格式为小写字母和数字, 不要复制双引号。例子:ca6bf2175d73as2188efg81f87e55f11) 3. 第二步有点繁琐, 大家结合下面的截图就看懂了 ![image](https://user-images.githubusercontent.com/32785355/119246278-e6760880-bbb2-11eb-877c-aca16cf75d89.png)
方式2
  1. 先通过浏览器(建议chrome)打开阿里云盘官网并登录:https://www.aliyundrive.com/drive/
  2. 登录成功后, 在地址栏输入 javascript: imgage
  3. 粘贴下列代码到javascript: 后面,然后按回车键 image 弹窗 image
var p=document.createElement('p');p.style='text-align:center;margin-top:30px';p.innerHTML='refresh_token: <span style="color:red;">'+JSON.parse(localStorage.getItem('token')).refresh_token+'</span>';var win=window.open('','_blank','width=800,height=100');win.document.body.appendChild(p);

同时, 也可以将上述代码组合为

javascript:var p=document.createElement('p');p.style='text-align:center;margin-top:30px';p.innerHTML='refresh_token: <span style="color:red;">'+JSON.parse(localStorage.getItem('token')).refresh_token+'</span>';var win=window.open('','_blank','width=800,height=100');win.document.body.appendChild(p);

添加为浏览器书签, 在https://www.aliyundrive.com/drive/ 页面点击该书签也会弹出refresh_token弹窗

功能说明

  1. 查看文件夹、查看文件
  2. 文件移动目录
  3. 文件重命名
  4. 文件下载
  5. 文件删除
  6. 文件上传(支持大文件自动分批上传)
  7. 支持超大文件上传(官方限制30G)
  8. 支持Webdav权限校验(默认账户密码:admin/admin)
  9. 文件下载断点续传
  10. Webdav下的流媒体播放等功能
  11. 支持文件名包含 / 字符
  12. 数据校验

注意事项

  1. 移动文件到其他目录的同时, 修改文件名。比如 /a.zip 移动到 /b/a1.zip, 是不支持的
  2. 文件上传断点续传
  3. 部分客户端兼容性不好
  4. 由于http协议在公网上明文传输密码, 部署在公网切记要开https, 否则不安全, 用宝塔反代即可
5. Windows提示无法访问
注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
BasicAuthLevel 改为2, 改完重启计算机或WebClient服务
6. Windows提示文件大小超过允许的限制,无法保存
注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
FileSizeLimitInBytes 改为FFFFFFFF, 也就是最大4GB限制, 改完重启计算机或WebClient服务
其他教程: 文件大小超过允许的限制,无法保存
  1. 直连模式下播放停止, 无法拖动进度条, 中途直接切换下一集等等, 详见客户端兼容性
  2. 部分设备浏览器内核较老(比如索尼电视), 程序启动时会自动加载浏览器内核, 如无法加载, 请根据您的设备类型选择其中一个版本手动下载并安装, 下载地址: 镜像链接 Android System WebView

免责声明

  1. 本软件为免费开源项目, 无任何形式的盈利行为。
  2. 本软件服务于阿里云盘, 旨在让阿里云盘功能更强大。如有侵权, 请与我联系, 会及时处理。
  3. 本软件皆调用官方接口实现, 无任何"Hack"行为, 无破坏官方接口行为。
  4. 本软件仅做流量转发, 不拦截、存储、篡改任何用户数据。
  5. 严禁使用本软件进行盈利、损坏官方、散落任何违法信息等行为。
  6. 本软件不作任何稳定性的承诺, 如因使用本软件导致的文件丢失、文件破坏等意外情况, 均与本软件无关。