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

时间:2010-01-27 18:49:28

标签: python winapi curl pywin32

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

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

我在pywin32中找不到任何看似挂钩到urllib2或提供等效功能的内容。那么,有没有一种方法可以在不请求凭据的情况下下载文件而不提示用户点击“保存”?

1 个答案:

答案 0 :(得分:4)

我最终找到使用urlmon.dll函数的some VB code from a Microsoft support page我用一行ctypes代码复制了它,它完全符合我的需要。

ctypes.windll.urlmon.URLDownloadToFileA(0,url,local_file_name,0,0)
  • url是资源的位置(在这种情况下,是Sharepoint网站上的Excel文件)
  • local_file_name是要保存的文件的本地路径和名称。

这会通过网络传递凭据而没有提示。