wget 或 curl 在从 OneDrive for business 下载文件时给出 403:Forbidden

Noo*_*rep 5 wget curl

我正在尝试为驻留在我的企业 OneDrive 帐户中的客户端下载软件。通过 OneDrive 的网络界面,我可以:

  • 右键单击文件并选择共享
  • 项目清单
  • 将链接设置更改为“知道链接的任何人”
  • 保持复选框在“允许编辑”
  • 复制链接

这给了我一个这样的链接:

https://company-my.sharepoint.com/:u:/g/personal/path/lKuaRC_jkBwW9IJo4rOmN8tZju8mePVw?e=lRErX4

当我浏览到那个链接时,我被重定向到一个下载页面,在那里我看到一个“下载”按钮,所以我点击下载,打开下载中心并选择“复制下载链接”,这样我就有了直接下载链接。当我将该链接复制到新的私人窗口时,我可以选择直接下载文件。

当我将该链接与 curl 或 wget 一起使用时,我仍然收到 403:FORBIDDEN

例如,这是我使用的命令:

wget https://company-my.sharepoint.com/personal/path/to/the/file.aspx?SourceUrl=%2Fpersonal%2Fme%5Fcompany%5Fcountry%2FDocuments%2Fpath%2FSoftware%2FDownloadPackageLocationLinuxSP16%2Etar
Run Code Online (Sandbox Code Playgroud)

和输出:

Resolving company-my.sharepoint.com (company-my.sharepoint.com)... aa.bbb.cc.d
Connecting to company-my.sharepoint.com (company-my.sharepoint.com)|aa.bbb.cc.d|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2020-01-24 14:46:48 ERROR 403: Forbidden.
Run Code Online (Sandbox Code Playgroud)

Kul*_*lfy 8

Google Chrome 和 Mozilla Firerfox 都提供了专门为 cURL 复制下载链接的选项。此选项将生成带有所有必需内容的 cURL,例如用于从侧面下载内容的用户代理。为了得到那个,

  1. 在任一浏览器中打开 URL。
  2. 使用开放开发人员选项Ctrl+ Shift+ I
  3. 转到网络选项卡。
  4. 现在点击下载。不需要保存文件。当浏览器从服务器请求文件时,我们只需要网络活动。
  5. 将出现一个新条目,类似于“ download.aspx?... ”。
  6. 右键单击并复制?复制为 cURL
  7. 将复制的内容直接粘贴到终端--output file.extension并附加以将内容保存在file.extension 中,因为终端无法显示二进制数据。

命令的一个例子:

curl 'https://company-my.sharepoint.com/personal/path/_layouts/15/download.aspx?SourceUrl=
%2Fpersonal%2Fsome%5Fpath%5Fin%2Ffile' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux 
x86_64; rv:73.0) Gecko/20100101 Firefox/73.0' -H 'Accept: text/html,application/xhtml+xml,
application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' 
--compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: https://company-my
.sharepoint.com/personal/path/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fagain%5Fa%5Fpath%2F
file&parent=%2Fpersonal%2Fpath%5Fagain%5Fin%2&originalPath=somegibberishpath' -H 
'Cookie: MicrosoftApplicationsTelemetryDeviceId=someid; 
MicrosoftApplicationsTelemetryFirstLaunchTime=somevalue; 
rtFa=rootFederationAuthenticationCookie; FedAuth=againACookie; CCSInfo=gibberishText; 
FeatureOverrides_enableFeatures=; FeatureOverrides_disableFeatures=' -H 
'Upgrade-Insecure-Requests: 1' -H 'If-None-Match: "{some value},2"' -H 'TE: Trailers' 
--output file.extension
Run Code Online (Sandbox Code Playgroud)

进一步阅读:为什么 curl 和 wget 会导致 403 被禁止?