使用urllib2进行Python认证
我正在尝试用Python从一个叫vsearch.cisco.com的网站下载文件。
[python]
#Connects to the Cisco Server and Downloads files at the URL specified
import urllib2
#Define Useful Variables
url = 'http://vsearch.cisco.com'
username = 'xxxxxxxx'
password = 'xxxxxxxx'
realm = 'CEC'
# Begin Making connection
# Create a Handler -- Also could be where the error lies
handler = urllib2.HTTPDigestAuthHandler()
handler.add_password(realm,url,username,password)
# Create an Opener
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
try:
urllib2.urlopen(url)
print f.read()
except urllib2.HTTPError, e:
print e.code
print e.header
[/python]
我遇到的错误是ValueError: AbstractDigestAuthHandler不知道基本的认证方式。
我尝试过使用基本的HTML认证处理器,甚至HTTPS处理器,但都无法让我访问。不过,这个错误和其他错误不一样,其他错误只是401 HTML错误。
有没有什么建议可以让我解决这个问题?
2 个回答
0
关于我在测试中尝试的内容(http://devel.almad.net/trac/django-http-digest/browser/djangohttpdigest/tests/test_simple_digest.py),错误可能出在你的网址上。为了让它正常工作,我在网址前面加上了 http:// 部分,而不仅仅是主机名。
8
一个“密码管理器”可能会有所帮助:
mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
mgr.add_password(None, url, user, password)
urllib2.build_opener(urllib2.HTTPBasicAuthHandler(mgr),
urllib2.HTTPDigestAuthHandler(mgr))