2013-08-06 2 views
2

Я пытаюсь получить доступ к страницам с моего сервера компании с помощью python. Первый возврат тропы 401: Unathorized (серверу требуется имя пользователя/pwd для проверки подлинности). И содержимое заголовка выглядит следующим образом, и, похоже, оно поддерживает 3 протокола аутентификации, переговоры, NTLM и дайджест, поэтому, по моему мнению, я могу выбрать любой из них, правильно?Дайджест аутентификации в Python?

Content-Type: text/html 
Server: Microsoft-IIS/7.0 
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 
WWW-Authenticate: Digest qop="auth",algorithm=MD5-sess,nonce="+Upgraded+v184080dc2d18fe10d63520db505929b5b5b929ec98692ce010e80d6347b7a35d4027e59e277ac4fe1c257a95196071258a8e0797bf6129f76",charset=utf-8,realm="Digest" 
X-Powered-By: ASP.NET 
Date: Tue, 06 Aug 2013 09:24:44 GMT 
Connection: close 
Content-Length: 1293 
Set-Cookie: LB-INFO=1065493258.20480.0000; path=/ 

Я использую следующие коды питона, но все еще есть 401 unanthorized ошибка, может кто-нибудь сказать мне, как я могу добиться этого? Должен ли я использовать NTLM? Заранее спасибо!

p = urllib2.HTTPPasswordMgrWithDefaultRealm() 
p.add_password(None, self.url, username, password) 
handler = urllib2.HTTPDigestAuthHandler(p) 
opener = urllib2.build_opener(handler) 
urllib2.install_opener(opener) 

f = opener.open(self.url) 

ответ

4

urllib2 - это стандартная библиотека python, но не обязательно лучшая для HTTP-запросов. Я настоятельно рекомендую проверить пакет requests, и вы можете найти учебник по проверке подлинности здесь: http://docs.python-requests.org/en/latest/user/authentication/#digest-authentication

+2

Спасибо, я сделал это с помощью запросов! 'request.get (url, auth = HttpNtlmAuth ('domain \\ username', pwd))' – badguy

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