Python не может пройти аутентификацию с помощью ntlm

Я пытаюсь проанализировать сайт в своей интрасети, и при аутентификации, как показано ниже, я получаю сообщение об ошибке, говорящее о том, что требуется аутентификация, что я уже сделал. Почему я все еще получаю эту ошибку 401?

Заранее спасибо!

Файл "C:\Python27\lib\urllib2.py", строка 531, в http_error_default вызывает HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: Ошибка HTTP 401: Требуется авторизация

import urllib2
from ntlm import HTTPNtlmAuthHandler

user = r'domain\myuser'
password = 'mypasswd'
url = 'http://myinternal.homepage'

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password)
# create the NTLM authentication handler
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman)

# create and install the opener
opener = urllib2.build_opener(auth_NTLM)
urllib2.install_opener(opener)

# retrieve the result
response = urllib2.urlopen(url)
print(response)

person Eric    schedule 02.09.2013    source источник
comment
Попробуйте последнюю версию code.google.com/p/python-ntlm и stackoverflow.com/a/14904367/819417   -  person Cees Timmerman    schedule 19.11.2013


Ответы (1)


Попробуйте не ставить «r» перед «domain\myuser». Я использовал это без 'r', и это работает для меня. Одна вещь, которая помогла мне (я предполагаю, что вы, вероятно, уже сделали... на всякий случай) проверьте заголовки, которые возвращает вам URL-адрес. Я сделал это с помощью Mechanize http://www.pythonforbeginners.com/cheatsheet/python-mechanize-cheat-sheet/ и на основе возвращенных заголовков понял, что мне следует использовать аутентификацию NTLM (как показано здесь). У меня также есть аналогичный вопрос Как "преобразовать" переменную типа instance, чтобы эту переменную можно было использовать для аутентификации при выполнении системных вызовов.

person MinimalMaximizer    schedule 09.01.2014