2

我正在尝试在我的 Intranet 上解析一个站点,并且在进行如下身份验证时,我收到一条错误消息,指出需要进行身份验证,我已经完成了。为什么我仍然收到此 401 错误?

提前致谢!

文件“C:\Python27\lib\urllib2.py”,第 531 行,在 http_error_default 中引发 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)
4

1 回答 1

1

尽量不要将 'r' 放在 'domain\myuser' 前面。我在没有'r'的情况下使用了它,它对我有用。帮助我的一件事-(我猜你可能已经这样做了......以防万一)检查url返回给你的标题。我使用 Mechanize http://www.pythonforbeginners.com/cheatsheet/python-mechanize-cheat-sheet/进行了此操作,并根据返回的标头发现我应该使用 NTLM 身份验证(如此处所示)。我也有一个类似的问题How to 'convert' variable of type instance 这样在进行系统调用时可以使用该变量进行身份验证

于 2014-01-09T16:59:40.200 回答