Загрузка файла, защищенного NTLM / SSPI, без запроса учетных данных при использовании Python на Win32 - PullRequest
6 голосов
/ 27 января 2010

Мне нужно скачать файл на корпоративном сайте Sharepoint с помощью CPython. Существующая кодовая база не позволяет мне использовать Ironpython без переноса кода, поэтому библиотека .NET WebClient отсутствует. Я также хочу загрузить файл, не запрашивая у пользователя сохранения и не запрашивая у пользователя учетные данные сети. Я пробовал другие библиотеки, но все они имели недостатки:

  • urllib2 плюс python-ntlm: требуется предоставить пользователя / пароль
  • COM-автоматизация Internet Explorer: пользователь должен нажать «Сохранить»
  • subprocess с использованием wget или cURL: невозможно выполнить аутентификацию без запроса пользователя / pass

Я не смог найти ничего в pywin32, которое выглядит так, будто оно подключается к urllib2 или обеспечивает эквивалентную функциональность. Итак, есть ли способ загрузить файл, не запрашивая учетные данные и не предлагая пользователю нажать «Сохранить»?

1 Ответ

4 голосов
/ 28 января 2010

В итоге я нашел некоторый VB-код со страницы поддержки Microsoft , который использует функцию из urlmon.dll Я скопировал его в одну строку кода ctypes, и он выполнил именно то, что мне было нужно делаем.

ctypes.windll.urlmon.URLDownloadToFileA(0,url,local_file_name,0,0)
  • url - местоположение ресурса (в данном случае файл Excel на сайте Sharepoint)
  • local_file_name - локальный путь и имя файла для сохранения.

Это передало учетные данные по сети без подсказок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...