如何使用CURL下载OneDrive中带密码保护的共享文件?
带密码保护的OneDrive共享文件curl下载方法
直接把共享密码放在Authorization: Bearer请求头里是错误的——Bearer头用于传递OAuth身份令牌,和共享文件的密码不是同一类验证凭据。要通过curl下载带密码的OneDrive共享文件,需要走「验证密码获取会话权限」的流程,具体步骤如下:
步骤1:获取验证所需参数
先发起一次不带密码的下载请求,触发验证提示,从返回的错误信息里提取关键参数:curl "https://api.onedrive.com/v1.0/shares/s!<fileId>/root/content"在返回的JSON错误信息中,找到
fixItUrl字段,从中提取id和challengeToken两个参数(对应URL里id=xxx和challengeToken=xxx的部分)。步骤2:提交密码获取会话Cookie
用提取到的参数向验证接口提交密码,将会话Cookie保存到本地文件:curl -c cookies.txt "https://onedrive.live.com/v1.0/shares/<提取到的id>/validatePermission" \ -H "Content-Type: application/json" \ -d '{"challengeToken":"<提取到的challengeToken>","password":"<你的共享文件密码>"}'执行成功后,会话权限Cookie会被保存到
cookies.txt文件中。步骤3:携带Cookie下载文件
最后带着保存的Cookie发起下载请求,即可获取带密码保护的文件:curl -b cookies.txt "https://api.onedrive.com/v1.0/shares/s!<fileId>/root/content" -o 你要保存的文件名.ext
注意:这种方式依赖OneDrive生成的会话Cookie,Cookie存在有效期,过期后需要重新执行上述步骤获取新的Cookie。
内容的提问来源于stack exchange,提问作者martfra
相关产品推荐
相关产品推荐

