Python的auth_handler对我无效

1 投票
1 回答
1263 浏览
提问于 2025-04-16 03:04

我一直在研究Python的urllib2这个库,它可以打开和读取需要密码的目录。不过,即使我看了文档里的例子,还有StackOverflow上的内容,我的脚本还是没法正常工作。

import urllib2
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm=None,
                    uri='https://webfiles.duke.edu/',
                    user='someUserName',
                    passwd='thisIsntMyRealPassword')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
socks = urllib2.urlopen('https://webfiles.duke.edu/?path=/afs/acpub/users/a')
print socks.read()
socks.close()

当我打印内容时,显示的却是我想打开的那个网址的登录页面的内容。有人知道这是为什么吗?

1 个回答

3

auth_handler 只是用来处理基本的HTTP身份验证。这个网站上有一个HTML表单,所以你需要把你的用户名和密码作为POST数据提交。

我建议你使用 mechanize 模块,这样可以让登录变得更简单。

快速示例:

import mechanize

browser = mechanize.Browser()

browser.open('https://webfiles.duke.edu/?path=/afs/acpub/users/a')

browser.select_form(nr=0)

browser.form['user'] = 'username'
browser.form['pass'] = 'password'
req = browser.submit()

print req.read()

撰写回答