MENU

让OneDrive实现WebDAV服务

December 13, 2021 • Read: 25502 • 记录

姊妹篇:自建阿里云盘WebDAV功能并搬运资源

本文梳理一下已发现的几种工具实现OneDrive(for business)的WebDAV服务,for business也就是商业版OneDrive。15G的个人OneDrive账户利用能力有限且兼容性较差所以这里不作讨论,个人版挂载教程见2020年onedrive怎么配置webdav?。以下很多操作都有烂大街的教程,我在这里只是抛砖引玉综合整理一下,提供更多的思路。

一、OneDrive本身

1.1 实现方式

OneDrive本身不支持目前通行的WebDAV协议,但它自己确实有比较特殊的WebDAV服务,只是能支持它的软件很少。以我的office365 E5 OneDrive登录后根目录的链接为例:

https://chirmyram-my.sharepoint.com/personal/office_chirmyram_top/_layouts/15/onedrive.aspx

则其对应的WebDAV链接为:

https://chirmyram-my.sharepoint.com/personal/office_chirmyram_top/Documents/

观察其特点可发现,将末尾的 /_layouts/15/onedrive.aspx 替换为 /Documents/ 就可以了。末尾 /Documents/ 即为 OneDrive 根目录,也可在其后继续添加子目录。

1.2 访问工具

1.2.1 rclone

rclone是一个支持多种云储存平台、国外云盘、储存协议的命令行工具,兼容OneDrive独特的WebDAV功能。挂载时使用WebDAV方式挂载,输入自己的WebDAV链接,选择链接类型为sharepoint,填写office365的账密,详细挂载教程可参考使用rclone转存别人分享的onedrive分享链接。两个网盘对拷不会占用本地储存空间,当然流量还是烧的自己的,而且是双倍流量,不过部分 VPS 商家不会计算进入VPS的入网流量。

在其他资源账户中,赋予域内另一空白账户对其资源文件夹的只可查看权限,即只读权限,使用 rclone 配置该空白账户及资源文件夹链接,自动加密账户密码,既可共享出来以供他人批量搬运资源,又能:限制操作权限、避免泄露密码、避免没有创建 API 权限的尴尬、不必担心 refresh token 过期。

1.2.2 davfs2

davfs2是Linux端的WebDAV挂载软件,也恰好支持挂载OneDrive的WebDAV链接。挂载教程参考:以WebDav方式挂载OneDriveLinux/VPS使用davfs2挂载webdav网盘

1.2.3 Windows资源管理器

这是微软自己最原始的支持方式,但还是无法直接访问WebDAV链接。使用资源管理器间接访问WebDAV链接,需要使用IE浏览器或兼容IE的浏览器,没错还要用到这种上古技术,比如Edge浏览器的IE模式、国内浏览器的兼容模式。登陆OneDrive后点击右上角切换视图,就会多出一个在文件资源管理器中进行查看选项,点击就会弹窗跳转到资源管理器中查看文件,访问一次后再次在资源管理器地址栏中粘贴WebDAV链接也可访问,不过清理缓存或重启电脑后会失效,又要从浏览器访问。

二、第三方工具

利用第三方工具实现WebDAV服务。

2.1 Koofr

本身是一家网盘服务商,默认2G空间,可以通过拉人头扩容至8G,当然也可以挂载其他网盘直接扩容。稍微调查了一下,官方在推特的账户发推多年,rclone挂载选项中也有Koofr(rclone作为久负盛名的云储存管理工具,不会支持不稳定的接口),不是突然冒出来的野鸡商家。每日限制上传流量1G,适合同步文档、配置等数据。如果跟坚果云对比的话,除了连接速度较慢,其他方面都是远超。限制挂载10个OneDrive账户,也支持在挂载的网盘间转移小文件。

注册登陆后,在左侧栏Connect选项中点击OneDrive图标进行挂载。挂载完毕后点击右上角头像,选择Places,即可对已挂载的网盘进行重命名、解绑操作。点击顶栏Preferences→Password→App passwords,生成WebDAV密码。WebDAV链接为https://app.koofr.net/dav,账号为Koofr网盘账号邮箱,密码为上述步骤生成的密码。

2.2 Cloudreve

需要自行搭建,经典套娃盘。这是一个网盘程序而不是网页目录程序,具有作为网盘的基本功能,当然也可强行当目录程序,比如建立一个文件夹然后分享出去。读取OneDrive文件路径映射到Cloudreve的数据,每次操作文件都是读取自己的数据库来实现变动,所以必须经过它来操作OneDrive文件,否则在OneDrive里面单方面操作后不会同步至它的数据库,再在它里面操作会失败,除非手动修改数据库。

搭建好之后在WebDAV管理页面生成WebDAV密码,在支持挂载WebDAV的软件中使用此密码和网盘账户登陆,WebDAV链接为首页链接/dav

2.3 sharelistalist

需要自行搭建。这俩本身为目录列表程序,初始作用是将文件公开展示在网页上,附带挂载OneDrive后转化为WebDAV服务,需要自行搭建。

这里列出的sharelist是旧版0.1版本,非最新版,通过WebDAV访问文件为只读权限,即无法修改只可查看。0.1版存在较多致命bug。如挂载账户超过1个所有账户的路径都会指向同一个,使用WebDAV播放视频时间一长就会导致整个网站变为所播放视频视频的直链,相当令人头痛,曾尝试搭建分站来解决问题,但同时运行多个进程也很不方便,迫于是当时发现唯一支持挂载网盘为 WebDAV 只读功能的程序,就一直用着,憋得慌。而新版目前仍在开发中,bug还是巨多,文档也不完善。在后台设置WebDAV路径,WebDAV链接为首页链接/路径,0.1版无WebDAV账密。

alist则稳定许多,同时稳定挂载多个盘,通过WebDAV访问文件拥有完整的读写权限,WebDAV访客账号拥有只读权限,适合公开分享。WebDAV链接为首页链接/dav,账密在后台设置。

2.4 rclone

2.4.1 rclone本身

rclone不仅可以挂载第三方的WebDAV服务,还可以自己搭建WebDAV服务器(不仅可以搭建WebdAV,还可以搭建更多服务:dlna、docker、ftp、http、restic、sftp,见官方文档)。用rclone挂载OneDrive,我这里的OneDrive配置名为wd,要挂载配置项的根目录为WebDAV服务,则rclone启动命令为:

rclone serve webdav --addr 0.0.0.0:端口 wd:/ --user 用户名 --pass 密码

中文部分自行替换更改。如果要挂载服务器本地路径,直接替换wd:/即可,如本地root文件夹则改为/root。现在就可以使用支持WebDAV的软件访问WebDAV链接:http://ip:端口,也可以弄个nginx反代、挂上ssl证书。

浏览器本身并不支持WebDAV协议,除非相关项目本身专门适配WebDAV的前端,否则浏览器无法打开WebDAV链接。不过rclone的WebDAV服务是有前端页面的,可以直接在浏览器中登陆链接查看文件。

2.4.2 rclone套娃

利用rclone套娃也能曲线救援实现WebDAV,rclone可以将配置好的网盘挂载至本地磁盘,像是在本地那样读写文件(当然不能执行文件),这适用于那些不支持挂载OneDrive但支持挂载本地路径为WebDAV的网盘目录程序。诸如Nextcloud、Owncloud、Seafile、kodbox……数不胜数。显然挂载后操作文件会消耗双倍流量,每次操作后都是自动下载后修改再上传回OneDrive而不是直接在OneDrive修改。

Centos挂载到本地前需要先安装fuse:

yum install fuse

其他Linux系统自行变通。

以上文的配置wd为例,将其根目录挂载至本地根目录的od文件夹中:

rclone mount wd:/ /od/

访问/od目录即可看到OneDrive里面的文件。若其他程序读取挂载目录时出现问题,可尝试以下参数比较详细的挂载命令:

rclone mount wd:/ /od/ --umask 0000 --default-permissions --allow-non-empty --allow-other --buffer-size 32M --dir-cache-time 12h --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G
本文作者:七米蓝
本文标题:《让OneDrive实现WebDAV服务》
本文链接:https://www.chirmyram.top/archives/onedrivewebdav
版权声明:本博客文章均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

Last Modified: April 26, 2023
Archives QR Code Tip
QR Code for this page
Tipping QR Code
Leave a Comment

18 Comments
  1. 秋澪 秋澪   Windows 10 x64 Edition  Chromium Edge 122.0.0.0

    现在E5子账号的Webdav功能是被禁用了吗,我使用Fileball的Webdav连接,提示403forbidden

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 122.0.0.0

      @秋澪Fileball什么时候能访问onedrive独有的webdav了?目前只知道rclone、alist可以访问。

    2. 秋澪 秋澪   Mac OS X 10.15.7  Safari 17.3.1

      @ChirmyRam我还以为one drive的webdav是可以直接被挂在的……

  2. 凡蜕博客 凡蜕博客   Windows 10 x64 Edition  Chromium Edge 112.0.1722.39

    路过,我服务器又续费了一年,继续写

  3. Kaspa小矿工 Kaspa小矿工   Android 13  Chromium Edge A

    谢谢分享,配合rclone+emby家里能继续在线看电影了

  4. paul paul   Windows 10 x64 Edition  Chromium Edge 104.0.1293.70

    大佬好,我按照您的配置,用Rclone做了挂载,结果弹出这个提示,请问什么问题?我查了下资料,说是IPV6的问题,但是我用挂载其他盘又没有问题,请教,谢谢。
    rclone serve webdav --addr https://al.chirmyram.com/dav/:443 /volume1/GDrive/al.chir --user alist --pass alist
    2022/09/03 16:56:48 Failed to webdav: start server failed: listen tcp: address https://al.chirmyram.com/dav/:443: too many colons in address

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 106.0.1363.0

      @paulrclone serve webdav的意思是将已配置好的配置项启动成webdav服务,你这是把我的alist webdav服务直接挂上去了,肯定不行。你必须先使用rclone config创建一个配置项,以webdav方式挂载填入我alist的配置。最后将你的创建的配置名搭建为webdav服务。

    2. paul paul   Windows 10 x64 Edition  Chromium Edge 104.0.1293.70

      @ChirmyRam谢谢博主,我重新做了个配置。但是本来想参考您文中提到的详细挂载教程,可惜一直都进不去,网上查找的,似乎都没有看到怎么挂载别人共享的资源。我再琢磨下,您也看看,有没有好的教程推荐,谢谢。

    3. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 106.0.1363.0

      @paul没发现完整教程,这是触类旁通滚雪球串起来的。

  5. null null   Mac OS X 10.15.7  Safari 14.1.1

    谢谢大佬!!!!

  6. 凡蜕博客 凡蜕博客   Windows 10 x64 Edition  Chromium Edge 101.0.1210.39

    路过顶顶顶

  7. jonathanfan jonathanfan   Windows 10 x64 Edition  Chromium Edge 99.0.1150.39

    koofr好用!感谢站长分享@(玫瑰)

  8. wolffy1998 wolffy1998   Windows 10 x64 Edition  Chromium Edge 96.0.1054.53

    使用koofr在浏览器中输入账号和应用密码显示 “Method Not Allowed”

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 98.0.1093.6

      @wolffy1998我在文章中也说过浏览器本身并不支持WebDAV协议除非项目本身适配了前端页面,就像ssh协议你觉得能用浏览器连接嘛。

    2. jiang jiang   Windows 10 x64 Edition  Chromium Edge 100.0.1185.12

      @wolffy1998位置来说需要设置https://app.koofr.net/dav/Koofr或https://app.koofr.net/dav/OneDrive

    3. Ming Ming   Windows 10 x64 Edition  Google Chrome 100.0.4896.127

      @jiang感谢大佬,我只有分开Koofr和Onedriver才能用,直接/dav报错~还有Onedriver改了名的小伙伴一定要改名字啊~我试了半天发现是自己改了名儿~~~

  9. huiliyi huiliyi   Android 10  WebView 4.0

    哈哈哈不错不错

  10. wolffy1998 wolffy1998   Android 9  Chromium Edge A

    感谢分享,收益颇多