我需要使用 CPython 在企业 Sharepoint 站点上下载文件。现有的代码库阻止我在不移植代码的情况下使用 Ironpython,因此 .NET 的 WebClient
库已经过时了。我还想在不提示用户保存且不提示用户输入网络凭据的情况下下载文件。我尝试了其他库,但它们都有缺点:
urllib2
pluspython-ntlm
: 需要提供用户/密码- Internet Explorer 的 COM 自动化:要求用户单击“保存”
subprocess
使用wget
或cURL
:在不请求用户/密码的情况下无法进行身份验证
我在 pywin32
中找不到任何看起来像 Hook 到 urllib2 或提供等效功能的东西。那么,有没有一种方法可以在不请求凭据且不提示用户单击“保存”的情况下下载文件?
最佳答案
我最终找到了 some VB code from a Microsoft support page它使用了 urlmon.dll
中的一个函数,我用一行 ctypes
代码复制了它,它完全完成了我需要它做的事情。
ctypes.windll.urlmon.URLDownloadToFileA(0,url,local_file_name,0,0)
url
是资源的位置(在本例中为 Sharepoint 站点上的 Excel 文件)local_file_name
是要保存的文件的本地路径和名称。
这会在没有提示的情况下通过网络传递凭据。
关于python - 在 Win32 上使用 Python 下载受 NTLM/SSPI 保护的文件而不提示输入凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2149496/