如何使用wget从Onedrive下载文件? (以及批处理文件和整个文件夹,如果可能的话)
答案1
2021 年 4 月更新:此解决方案似乎不再适用于 ONEDRIVE FOR BUSINESS。
有一种方法对我有用(基于如何直接链接 OneDrive 文件)
右键单击您有兴趣下载的文件(从 Web 界面),然后选择嵌入。
按“生成 HTML 代码以嵌入此文件”。
复制 src 中包含的部分
""
就是您的链接。这看起来像 <https://onedrive.live.com/embed?cid=6EBB03E38A53ED3E& resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA>。embed
用。。。来代替download
。这看起来像https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA。使用以下语法将其输入
wget
(需要引号):wget --no-check-certificate "https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA"
享受。
答案2
生成共享链接并将“&download=1”附加到其末尾。
例如,如果链接是“https://some.host/:z:/x/personal/some_user/123456asdf?e=12345”
然后
wget "https://some.host/:z:/x/personal/some_user/123456asdf?e=12345&download=1"
答案3
使用 Chrome(但 Firefox 可能也可以)。
- 打开开发工具
- 单击下载按钮。
- 下载但立即取消
- 打开 DevTools 中的“网络”选项卡。在 DevTools 中搜索“Zip?authKey=”并将其打开(单击)。这是一个 POST 请求。
- 单击底部“表单数据”右侧的“查看源”。
- 构造命令如下:
wget --post-data='<raw form data>' '<Download URL>'
或者:
wget --post-data='resIds=xxx&canary=yyy&authkey=zzz' 'https://cid--foobar.users.storage.live.com/downloadfiles/V1/Zip?authKey=zzz'
这甚至可以在不同的主机(具有不同的 IP 地址)上运行。
答案4
如果您想下载整个公开共享文件夹(未经授权!):一死
它使用 wget 进行一些 API 调用,然后递归下载文件。奖励:完成文件的 sha1 检查。
共享点现在也支持,但它有点棘手(它当前从驱动器获取的文件比链接显示的文件多)。主要问题是 API 结构略有不同,而且会话令牌会在 1 小时后过期,但它也已解决。它们似乎还设置了一些速率限制,因此不要启动太多并行下载。
该脚本可以使用参数提取现成的wget
命令-w
。
PS:如果您有兴趣了解更多有关 Web API 的信息,我将简要介绍该过程。