aliyundrive-webdav
aliyundrive-webdav copied to clipboard
阿里云盘(https://www.aliyundrive.com/) 的webdav协议开源实现,支持安卓、Linux、树莓派、Docker、Windows、macOS部署, 并附带JAVA SDK支持二次开发
说明
1.1.0版本支持阿里Teambition网盘的webdav协议
2.x版本仅支持阿里云盘, 不再维护Teambition网盘版本
3.x版本支持阿里云盘OpenApi
3.4.0及以上版本默认支持直连模式下载
4.0.0及以上版本支持web文件管理以及访问备份盘和资源库
目录
- aliyundrive-webdav
-
如何使用
- Jar包运行
- 容器运行
- Docker-Compose
- Kubernetes
- 连接说明
- 参数说明
- QQ群
- 新手教程
- 客户端兼容性
- 浏览器获取refreshToken方式
-
功能说明
- 支持的功能
- 注意事项
- 免责声明
aliyundrive-webdav
本项目实现了阿里云盘的webdav协议, 只需要简单的配置一下, 就可以让阿里云盘变身为webdav协议的文件服务器。 基于此, 你可以把阿里云盘挂载为Windows、Linux、Mac系统的磁盘, 可以通过NAS系统做文件管理或文件同步, 更多玩法等你挖掘
直接运行(Windows/Linux/macOS/Android)
- Windows
aliyundrive-webdav-windows-amd64.exe
- Linux(X64)
./aliyundrive-webdav-linux-amd64
- Linux(ARM64)
./aliyundrive-webdav-linux-arm64
- macOS(Intel)
最新的native编译工具链目前有问题, 请先用jar版替代
~~./aliyundrive-webdav-darwin-x86_64~~
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.3"
implementation "net.xdow:aliyundrive-sdk-webapi:2.0.3"
//可选
implementation "net.xdow:webdav:2.0.3"
implementation "net.xdow:webdav-jakarta:2.0.3"
implementation "net.xdow:webdav-javax:2.0.3"
implementation "net.xdow:aliyundrive-webdav-internal:2.0.3"
implementation "net.xdow:aliyundrive-android-core:2.0.3"
implementation "net.xdow:jap-http:2.0.3"
implementation "net.xdow:jap-http-jakarta-adapter:2.0.3"
implementation "net.xdow:jap-http-javax-adapter:2.0.3"
SDK基础用法
AliyunDrive.newAliyunDrive()
QQ群
新手教程
客户端兼容性
客户端 | 下载 | 上传 | 备注 |
---|---|---|---|
群辉Cloud Sync | 代理模式 | :white_check_mark: | 建议使用单向同步 |
Rclone | :rocket:直连模式 | :white_check_mark: | 推荐, 支持各个系统, 直连模式需要添加参数, 见下方配置说明 |
Mac原生 | :rocket:直连模式 | :white_check_mark: | |
Transmit | :rocket:直连模式 | :white_check_mark: | |
Windows原生 | :rocket:直连模式 | :white_check_mark: | 不推荐!有4GB文件传输限制,首次使用还需配置http, 见下方'注意事项' |
RaiDrive | :rocket:直连模式 | :white_check_mark: | Windows平台下建议用这个 |
WinSCP 6.1.1+ | :rocket:直连模式 | :white_check_mark: | 6.1.1以下版本不支持直连模式 |
Fileball | ~~:rocket:直连模式~~ | :white_check_mark: | |
nPlayer | :rocket:直连模式 | :white_check_mark: | 推荐 |
MT管理器 | :rocket:直连模式 | :white_check_mark: | 推荐 |
ES文件浏览器 | :rocket:直连模式 | :white_check_mark: | |
Kodi 20.0+ | ~~:rocket:直连模式~~ | :white_check_mark: | ~~2023年后编译版本可用直连模式~~ |
IINA 2.0.1+ | :rocket:直连模式 | :white_check_mark: | macOS 推荐 |
MXPlayer | :rocket:直连模式 | :white_check_mark: | |
jetAudio | :rocket:直连模式 | :white_check_mark: | 受jetAudio限制,端口号只能为80(http) 或 443(https), 安卓端不可直接监听以上端口! |
VLC | ~~:rocket:直连模式~~ | :white_check_mark: |
- 所有客户端均默认支持代理模式
- ~~:rocket:直连模式~~: 由于阿里云盘目前直链有效期为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. 第二步有点繁琐, 大家结合下面的截图就看懂了 方式2
- 先通过浏览器(建议chrome)打开阿里云盘官网并登录:https://www.aliyundrive.com/drive/
- 登录成功后, 在地址栏输入 javascript:
- 粘贴下列代码到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);
同时, 也可以将上述代码组合为
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弹窗
功能说明
- 查看文件夹、查看文件
- 文件移动目录
- 文件重命名
- 文件下载
- 文件删除
- 文件上传(支持大文件自动分批上传)
- 支持超大文件上传(官方限制30G)
- 支持Webdav权限校验(默认账户密码:admin/admin)
- 文件下载断点续传
- Webdav下的流媒体播放等功能
- 支持文件名包含
/
字符 - 数据校验
注意事项
- 移动文件到其他目录的同时, 修改文件名。比如 /a.zip 移动到 /b/a1.zip, 是不支持的
- 文件上传断点续传
- 部分客户端兼容性不好
- 由于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服务 其他教程: 文件大小超过允许的限制,无法保存
- 直连模式下播放停止, 无法拖动进度条, 中途直接切换下一集等等, 详见客户端兼容性
- 部分设备浏览器内核较老(比如索尼电视), 程序启动时会自动加载浏览器内核, 如无法加载, 请根据您的设备类型选择其中一个版本手动下载并安装, 下载地址: 镜像链接 或 Android System WebView
免责声明
- 本软件为免费开源项目, 无任何形式的盈利行为。
- 本软件服务于阿里云盘, 旨在让阿里云盘功能更强大。如有侵权, 请与我联系, 会及时处理。
- 本软件皆调用官方接口实现, 无任何"Hack"行为, 无破坏官方接口行为。
- 本软件仅做流量转发, 不拦截、存储、篡改任何用户数据。
- 严禁使用本软件进行盈利、损坏官方、散落任何违法信息等行为。
- 本软件不作任何稳定性的承诺, 如因使用本软件导致的文件丢失、文件破坏等意外情况, 均与本软件无关。