代码之家  ›  专栏  ›  技术社区  ›  technomalogical

下载受ntlm/sspi保护的文件而不提示在win32上使用python进行凭据?

  •  6
  • technomalogical  · 技术社区  · 15 年前

    我需要使用cpython在公司的SharePoint网站上下载一个文件。现有的代码库阻止我在不移植代码的情况下使用Ironpython,所以.NET的 WebClient 图书馆不在。我还希望下载该文件而不提示用户保存,也不提示用户提供网络凭据。我试过其他图书馆,但都有不足之处:

    • urllib2 python-ntlm :需要提供用户/通行证
    • Internet Explorer的COM自动化:要求用户单击“保存”
    • subprocess 使用 wget cURL :在没有请求用户/通行证的情况下无法进行身份验证

    我在里面找不到任何东西 pywin32 它看起来像是钩住了urllib2或者提供了同等的功能。那么,有没有一种方法可以下载文件而不需要请求凭证,也不提示用户单击“保存”?

    1 回复  |  直到 12 年前
        1
  •  4
  •   technomalogical    15 年前

    我最终发现 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 是要保存的文件的本地路径和名称。

    这会在没有提示的情况下通过线路传递凭证。