Я пытаюсь получить доступ к Sharepoint с помощью механизации, но у меня ошибка 401. Вот код, который я использую:
import mechanize
url = "http://sharepoint:8080/foo/bar/foobar.aspx"
br.addheaders = [('User-agent', 'Mozilla/4.0(compatible; MSIE 7.0b; Windows NT 6.0)')]
br.add_password(url, 'domain\\user', 'myPassword')
r = br.open(url)
html = r.read()
Я что-то пропустил?
Вам удалось попробовать Python Ntlm для доступа к SharePoint?
Примеры в документе Ntlm объяснят, как использовать его с Urllib2. Вставка под кодом для использования аутентификации NTLM с использованием механизации.
import mechanize
from ntlm import HTTPNtlmAuthHandler
pass_manager = mechanize.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password)
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(pass_manager)
browser = mechanize.Browser()
browser.add_handler(auth_NTLM)
r = browser.open(url)
html = r.read()
Рассматривая использование mechanize docs, вам нужно указать только имя пользователя (например, 'john_doe'
, попробуйте
...
br.add_password(url, 'username_string', 'myPassword')
r = br.open(url)
html = r.get_data() # r.get_data() can be called many times without calling seek
Попробуйте:
br.addheaders = [('User-agent', 'Mozilla/4.0(compatible; MSIE 7.0b; Windows NT 6.0)'), ('Authorization', 'Basic %s:%s' % ('domain\\user', 'myPassword'))]
вместо
br.addheaders = [('User-agent', 'Mozilla/4.0(compatible; MSIE 7.0b; Windows NT 6.0)')]
Это должно работать, если ваш сервер sharepoint предоставляет Basic Auth.