如何使用 wget 从 Onedrive 下载文件和文件夹?

cha*_*les 25 download wget batch-jobs

如何使用 wget 从 Onedrive 下载文件?(如果可能,还有批处理文件和整个文件夹)

Fed*_*890 23

2021 年 4 月更新:看起来此解决方案不再适用于 ONEDRIVE for BUSINESS。

有一种方法对我有用(基于如何制作 OneDrive 文件的直接链接

  1. 右键单击您有兴趣下载的文件(从 Web 界面),然后选择嵌入。

  2. “生成 HTML 代码以嵌入此文件”

  3. 复制""src 中包含的部分是您的链接。这看起来像 <https://onedrive.live.com/embed?cid=6EBB03E38A53ED3E& resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA>。

  4. 替换embeddownload。这看起来像https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA

  5. wget使用以下语法将其提供给它(需要引号):

     wget --no-check-certificate "https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA"
    
    Run Code Online (Sandbox Code Playgroud)
  6. 享受。

  • @Fedorov7890 叹息。**[这不适用于 ONEDRIVE FOR BUSINESS](https://docs.microsoft.com/en-us/graph/api/driveitem-createlink?view=graph-rest-1.0&amp;tabs=http#link-types )**。 (4认同)
  • 不要忘记将链接放在 `wget` 中的 `""` 中。我这样做了,但没有成功。 (2认同)
  • 当我右键单击文件或文件夹时,我没有看到“嵌入”。 (2认同)

小智 13

使用 Chrome(但 Firefox 可能也适用)。

  1. 打开开发者工具
  2. 单击下载按钮。
  3. 下载但立即取消
  4. 在 DevTools 中打开“网络”选项卡。在 DevTools 中搜索 'Zip?authKey=' 并打开它(单击)。这是一个 POST 请求。
  5. 单击底部“表单数据”右侧的“查看源”。
  6. 构造命令如下:

 

wget --post-data='<raw form data>' '<Download URL>'
Run Code Online (Sandbox Code Playgroud)

或者:

wget --post-data='resIds=xxx&canary=yyy&authkey=zzz' 'https://cid--foobar.users.storage.live.com/downloadfiles/V1/Zip?authKey=zzz'
Run Code Online (Sandbox Code Playgroud)

这甚至适用于不同的主机(具有不同的 IP 地址)。

  • 对此的一个更简单的变体(使用 Firefox)是:工具-&gt;Web 开发者-&gt;网络。找到“Zip?authKey=”,右键单击它并“复制为cURL”。复制粘贴到命令行并添加“-o /path/to/some/file”。当然,这使用 cURL 而不是 wget,但为此目的,它们的功能相同 (4认同)

小智 10

生成一个共享链接并将“&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"
Run Code Online (Sandbox Code Playgroud)

  • 不再工作了:( (4认同)

小智 9

此外,我们可以使用CurlWget 我已经在 OneDrive 和 Google Drive 上尝试过


Bot*_*War 5

如果您想要下载整个公共共享文件夹(无需授权!):OneDeath

它使用 wget 进行一些 API 调用,然后递归下载文件。奖励:完成文件的 sha1 检查。

现在也支持Sharepoint,但它有点棘手(它当前从驱动器获取的文件比链接显示的文件多)。主要问题是 API 结构略有不同,而且会话令牌会在 1 小时后过期,但它也已解决。它们似乎还设置了一些速率限制,因此不要启动太多并行下载。

该脚本可以使用参数提取现成的wget命令-w

PS:如果您有兴趣了解更多有关 Web API 的信息,我将简要介绍该过程。


小智 5

  1. 在 Chrome 等 Web 界面中打开链接。
  2. 点击左上角的“下载”。
  3. 在底部,单击“显示全部”。
  4. 找到正在下载或已下载的文件,右键单击长链接,然后单击“复制链接地址”。
  5. wget 命令行中的长地址。