我一直在阅读有关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()

当我打印内容时,它会打印我要打开的URL的登录屏幕内容,将重新定向您。有人知道为什么这是吗?

有帮助吗?

解决方案

auth_handler 仅用于基本的HTTP身份验证。此处的网站包含HTML表单,因此您需要将用户名/密码作为发布数据提交。

我建议您使用 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()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top