2013-09-02 5 views
2

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

Заранее благодарен!

File "C:\Python27\lib\urllib2.py", line 531, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 401: Authorization Required

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) 
+0

Пробуйте последние http://code.google.com/p/python-ntlm/ и http://stackoverflow.com/a/14904367/819417. –

ответ

1

Старайтесь не putthing на 'г' перед 'домен \ MyUser'. Я использовал это без «r», и это работает для меня. Одна вещь, которая помогла мне - (я предполагаю, что вы, вероятно, уже сделали ... на всякий случай), проверьте заголовки, что URL возвращается вам. Я сделал это с помощью Mechanize http://www.pythonforbeginners.com/cheatsheet/python-mechanize-cheat-sheet/ и на основе возвращенных заголовков я должен был использовать NTLM auth (как видно здесь). У меня также есть аналогичный вопрос How to 'convert' variable of type instance such that the variable can be used to authenticate when making system calls.

Смежные вопросы