下载受NTLM/SSPI保护的文件而不在Win32上使用Python提示凭据?

tec*_*cal 6 python winapi curl pywin32

我需要使用CPython在企业Sharepoint站点上下载文件.现有的代码库阻止我在不移植代码的情况下使用Ironpython,因此.NET的WebClient库已经用完了.我还想在不提示用户保存的情况下下载文件,并且不提示用户输入网络凭据.我尝试过其他库,但它们都有缺点:

  • urllib2python-ntlm:要求提供用户/通行证
  • Internet Explorer的COM自动化:要求用户单击"保存"
  • subprocess使用wgetcURL:无法在不请求用户/通过的情况下进行身份验证

我找不到任何东西pywin32,看起来它挂钩到urllib2或提供相同的功能.那么,有没有一种方法可以在不请求凭据的情况下下载文件而不提示用户点击"保存"?

tec*_*cal 4

我最终从 Microsoft 支持页面找到了一些 VB 代码,该代码使用了urlmon.dll我用一行ctypes代码复制它的函数,并且它完全完成了我需要它做的事情。

ctypes.windll.urlmon.URLDownloadToFileA(0,url,local_file_name,0,0)
Run Code Online (Sandbox Code Playgroud)
  • url是资源的位置(在本例中为 Sharepoint 站点上的 Excel 文件)
  • local_file_name是要保存的文件的本地路径和名称。

这会在没有提示的情况下通过网络传递凭据。