Python auth_andler не работает для меня
-
30-09-2019 - |
Вопрос
Я читал о способности Python's 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()
Не связан с StackOverflow