从公共Sharepoint目录编程下载文件

2024-06-06 17:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从公共Sharepoint目录列出并下载文件。 我有格式的链接 https://xxx.sharepoint.com/:f:/s/site_name/long_id?e=shorter_id
重定向到
https://xxx.sharepoint.com/sites/site_name/Shared%20Documents/Forms/AllItems.aspx?cid=some_id&RootFolder=encoded_path&FolderCTID=another_is

对于非公共文件,我正在使用Office365-REST-Python-Client和真实帐户凭据,但是这个库不允许在没有auth的情况下使用

因为这似乎是相对简单的任务,我可以使用裸机RESTAPI,但作为一个完整的Sharepoint新手,我可以使用一些提示从哪里开始寻找


Tags: 文件namehttps目录comid链接格式
1条回答
网友
1楼 · 发布于 2024-06-06 17:05:54

我认为使用sharepointapi存档可能是不可能的(至少找不到如何存档),但通过处理简单的请求是可行的。
似乎在幕后,Sharepoint执行一些自动授权,并执行多个重定向来附加授权cookies。
您只需对所有请求使用一些真正的User-Agent

步骤如下:

  • 获取https://xxx.sharepoint.com/:f:/s/site_name/long_id?e=shorter_id 您将收到301到授权端点
  • 获取https://xxx.sharepoint.com/sites/site_name/_layouts/15/guestaccess.aspx?e=shorter_id&share=long_id。这一个将设置一些cookies和302到您的目的地
  • 获取https://xxx.sharepoint.com/sites/site_name/Shared%20Documents/path_to_dir?cid=some_id这个将返回实际数据。必须使用上一步中的auth Cookie
  • 作为响应,用javascript ListData对象查找script标记。它将包含描述所有文件的结构。您对FileRef属性感兴趣
  • 获取https://xxx.sharepoint.com/sites/site_name/_layouts/15/download.aspx?SourceUrl=FileRef它将下载您的数据。记住auth头

虽然不是很理想,但对我来说很管用

相关问题 更多 >