Python auth_handler не работает для меня - PullRequest
1 голос
/ 20 августа 2010

Я читал о способности 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, который я пытаюсь открыть. Кто-нибудь знает, почему это так?

1 Ответ

3 голосов
/ 20 августа 2010

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()
...